[英]Javascript date in specific format from string
如何在不將 Date 對象更改為 String 對象的情況下以 ddmmyyyy 格式獲取 javascript 日期?
String stringDate = 31/08/2015
(以 dd/mm/yyyy 格式)dateObj = 31/08/2015
(其中 dateObj 是 dd/mm/yyyy 格式的 javascript 日期對象)如何在 javascript 中將“dd/mm/yyyy”形式的字符串轉換為日期對象:
var stringDate = "31/08/2015";
//split the string into array of date components
stringDate = stringDate.split("/");
//stringDate is now ["31", "08", "2015"]
//convert each array string value to a number, using unary plus
//and feed these values into a new date object
var dateObj = new Date(+stringDate[2], +stringDate[1] - 1, +stringDate[0]);
//note that javascript month values are 0 for Jan ... 11 for Dec, need to subtract one from the month value
以及如何從日期對象中獲取“dd/mm/yyyy”形式的字符串:
//a date object representing 31 Aug 2015
var dateObject = new Date(2015, 7, 31);
//get the date, month and year values from the date object
var dmy = [
dateObject.getDate(),
dateObject.getMonth() + 1,
dateObject.getFullYear()
];
//convert to strings and pad with leading zero, if necessary
dmy[0] = ('0' + dmy[0]).slice(-2);
dmy[1] = ('0' + dmy[1]).slice(-2);
dmy[2] = ('0000' + dmy[2]).slice(-4);
//join values with `/` as delimiter
dmy = dmy.join('/');
//dmy is now the string "31/08/2015"
從您的問題和您對我之前回答的評論來看,您似乎在要求以下內容:
第一個任務在我之前的回答中已經解釋過了,讓我們通過制作一個函數來進行轉換來總結:
//create date object from string on the form "dd/mm/yyyy"
function getDateObjectFromString(dmyString){
return new Date(
+ dmyString.slice(6,10),
(+ dmyString.slice(3,5)) - 1,
+ dmyString.slice(0,2)
);
}
測試這個:
var dateString = "31/08/2015";
var dateObject = getDateObjectFromString(dateString);
如果您在控制台中檢查dateObject
或在代碼中使用它,它將顯示為一個字符串(與您要求的格式不同),但這是因為 javascript 會自動將 Date 對象轉換為字符串表示(或數字表示),具體取決於在上下文中,通過調用 Date 對象的原生toString()
或toValue()
方法。
您可以方便地查看dateString
和dateObject
是不同的,而且dateObject
確實有一個日期對象的屬性:
console.log(typeof dateString); //returns "string"
console.log(typeof dateObject); //returns "object"
console.log(dateObject.toString()); //returns a browser-dependent and timezone-dependent string
console.log(dateObject.valueOf()); //returns the numeric date representation
第二個任務可以通過讓你的 Date 對象使用自定義.toString()
方法來實現:
//custom method to get "dd/mm/yyyy" when called on a Date object
function customDateToString(){
return [
('0' + this.getDate()).slice(-2),
('0' + (this.getMonth() + 1)).slice(-2),
('0000' + this.getFullYear()).slice(-4)
].join("/");
}
我們將避免弄亂Date.prototype
,但是可以在我們創建日期對象時分配這個自定義.toString()
,修改getDateObjectFromString
函數:
function getDateObjectFromString(dmyString){
var dateObject = new Date(
+ dmyString.slice(6,10),
(+ dmyString.slice(3,5)) - 1,
+ dmyString.slice(0,2)
);
dateObject.toString = customDateToString;
return dateObject;
}
現在測試:
var dateString = "31/08/2015";
var dateObject = getDateObjectFromString(dateString);
console.log(dateObject); //displays "31/08/2015"
console.log(dateObject.getDay()); // displays 1 (for Monday), showing that dateObject indeed has the properties/methods of a Date object
我希望這能回答你的問題。
有一種簡單的方法可以獲得所需的輸出。
表示從“ Mon Sep 07 2020 15:21:31 GMT+0530(印度標准時間) ”到“ 07/09/2020 ”。
假設您通過以下方式獲取日期對象
const d = new date();
// 2020 年 9 月 7 日星期一 15:21:31 GMT+0530
您可以通過附加函數將其轉換為DD-MM-YYYY格式
toLocaleDateString('en-GB')
// 07/09/2020
所以完整的代碼是
const d = new Date(); console.log('Original date', d) const newDate = d.toLocaleDateString('en-GB'); console.log('Modified date', newDate)
試試這個:
var d = new Date("31/0/2015");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.