格式化 JavaScript 日期
在現代瀏覽器中格式化 JavaScript 日期
在現代瀏覽器(*)中, Date.prototype.toLocaleDateString()
允許你以方便的方式定義 Date
的格式。
它需要以下格式:
dateObj.toLocaleDateString([locales [, options]])
locales
引數應該是帶有 BCP 47 語言標記的字串,或者是此類字串的陣列。
options
引數應該是具有以下部分或全部屬性的物件:
- localeMatcher :可能的值是
lookup
和best fit
; 預設為best fit
- timeZone :實現必須識別的唯一值是
UTC
; 預設值是執行時的預設時區 - hour12 :可能的值是
true
和false
; 預設值取決於語言環境 - formatMatcher :可能的值是
basic
和best fit
; 預設為best fit
- 工作日 :可能的值是
narrow
,short
&long
- 時代 :可能的值是
narrow
,short
&long
- 年 :可能的價值是
numeric
&2-digit
- 月 :可能的值是
numeric
,2-digit
,narrow
,short
&long
- 日 :可能的值是
numeric
&2-digit
- 小時 :可能的值是
numeric
&2-digit
- 分鐘 :可能的值是
numeric
&2-digit
- 第二 :可能的值是
numeric
&2-digit
- timeZoneName :可能的值是
short
&long
如何使用
var today = new Date().toLocaleDateString('en-GB', {
day : 'numeric',
month : 'short',
year : 'numeric'
});
輸出如果在 2036 年 1 月 24 日執行:
'24 Jan 2036'
去定製
如果 Date.prototype.toLocaleDateString()
不夠靈活,無法滿足你的任何需求,你可能需要考慮建立一個如下所示的自定義 Date 物件:
var DateObject = (function() {
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var date = function(str) {
this.set(str);
};
date.prototype = {
set : function(str) {
var dateDef = str ? new Date(str) : new Date();
this.day = dateDef.getDate();
this.dayPadded = (this.day < 10) ? ("0" + this.day) : "" + this.day;
this.month = dateDef.getMonth() + 1;
this.monthPadded = (this.month < 10) ? ("0" + this.month) : "" + this.month;
this.monthName = monthNames[this.month - 1];
this.year = dateDef.getFullYear();
},
get : function(properties, separator) {
var separator = separator ? separator : '-'
ret = [];
for(var i in properties) {
ret.push(this[properties[i]]);
}
return ret.join(separator);
}
};
return date;
})();
如果你在 2019 年 1 月 20 日包含該程式碼並執行了 new DateObject()
,它將生成具有以下屬性的物件:
day: 20
dayPadded: "20"
month: 1
monthPadded: "01"
monthName: "January"
year: 2019
要獲取格式化字串,你可以執行以下操作:
new DateObject().get(['dayPadded', 'monthPadded', 'year']);
這將產生以下輸出:
20-01-2016
(*) 根據 MDN ,現代瀏覽器意味著 Chrome 24 +,Firefox 29 +,IE11,Edge12 +,Opera 15+和 Safari 夜間構建