首頁 > 軟體

js日期格式化yyyy-MM-dd問題

2023-01-22 14:00:25

js日期格式化yyyy-MM-dd

方法一

function formatDate(date) {
console.log(date);
// date = new Date();
date = new Date(Date.parse(date.replace(/-/g, "/"))); //轉換成Data();
console.log(date);
var y = date.getFullYear();
console.log(y);
var m = date.getMonth() + 1;
m = m < 10 ? '0' + m : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
return y + '-' + m + '-' + d;
}

方法二

Date.prototype.format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小時
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
}

方法二呼叫:

new Date(addtime).format("yyyy-MM-dd");   //addtime這個是時間字元

yyyy-MM-dd和YYYY-MM-dd格式化日期的區別你知道嗎?

這裡yyyy-MM-dd對於年份取值取得是當天所在的這個年份

而YYYY-MM-dd它所取的年份是本週所在的這個年份

這裡我們就要注意一個問題

如果我們所格式化的這個日期它所在的周是一個跨年周的話 , 那麼這裡所取的年份就是第二年的年

接下來我們找一個case驗證一下:

通過檢視日曆我們可以看到2021年12月31號它所在的周是一個跨年周

它這周開始於21年12月26號,結束於22年1月2號

接下來我們來演示一下

首先看程式碼我們分別建立了yyyy和YYYY兩種日期格式化

然後生成了12月31號的這個日期

然後分別用這兩種格式化對這兩種日期進行輸出

出大問題了

通過輸出可以看到YYYY輸出的日期是2022年,yyyy輸出的日期是2021年

這就是它們兩個的區別

在平時的開發中尤其對於會員啊,投放啊這種日期敏感型的場景,一定避免使用YYYY這種日期敏感型格式,避免造成不必要的線上故障

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com