1. YYYY-MM-DD轉換爲英文顯示
目標:將2019-1-2轉換成Jan 01, 2019
實現方式:
先將YYYY-MM-DD轉換成YYYY/MM/DD的各瀏覽器兼容的字符串形式,再轉換成Date對象,從而得到其字符串形式。拆分字符串並進行重組,得到目標字符串。
let date = new Date('2019-1-2'.replace(/-/g,'/')); //Wed Jan 02 2019 00:00:00 GMT+0800 (China Standard Time)
let chinaDate = date.toDateString(); //"Tue, 01 Jan 2019 16:00:00 GMT"
//注意:此處時間爲中國時區,如果是全球項目,需要轉成【協調世界時】(UTC)
let globalDate = date.toUTCString(); //"Wed Jan 02 2019"
//之後的處理是一樣的
let chinaDateArray = chinaDate.split(' '); //["Wed", "Jan", "02", "2019"]
let displayDate = `${chinaDateArray[1]} ${chinaDateArray[2]}, ${chinaDateArray[3]}`; //"Jan 02, 2019"
2. 日期處理函數
(1) 日期相隔天數
//Date fomat: yyyy/mm/dd
function dateDifference(sDate1, sDate2) {
var dateSpan;
sDate1 = Date.parse(sDate1);
sDate2 = Date.parse(sDate2);
dateSpan = sDate2 - sDate1;
dateSpan = Math.abs(dateSpan);
return Math.floor(dateSpan / (24 * 3600 * 1000));
};
(2) 某天的第二天
//Date fomat: yyyy/mm/dd
function getNextDate(date,day) {
var dd = new Date(date);
dd.setDate(dd.getDate() + day);
var y = dd.getFullYear();
var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
return y + "-" + m + "-" + d;
};
(3) 比較日期先後
//Date fomat: yyyy/mm/dd
function compareDays(d1,d2){
var d1 = Date.parse(d1);
var d2 = Date.parse(d2);
return d2 > d1;
}
compareDays('2019/01/01','2019/01/02'); //=> true
(4) 獲取倒計時
//dt爲Date對象
function getDownTime(dt) {
// 1.獲取倒計時
var intervalMsec = dt - Date.now(); // 目的時間減去現在的時間,獲取兩者相差的毫秒數
var intervalSec = intervalMsec / 1000; // 轉換成秒數
var day = parseInt(intervalSec / 3600 / 24); // 天數
var hour = parseInt((intervalSec - day * 24 * 3600) / 3600); // 小時
var min = parseInt((intervalSec - day * 24 * 3600 - hour * 3600) / 60); // 分鐘
// 2.若相差的毫秒小於0 ,表示目的時間小於當前時間,這時的取的值都是負的:-X天-時-分,顯示時,只顯示天數前面爲負的就行。
if (intervalMsec < 0) {
hour = 0 - hour;
min = 0 - min;
}
// 3.拼接字符串並返回
var rs = day + '天' + hour + '時' + min + '分';
return rs;
}
getDownTime(new Date('2019/04/07')); //=> "30天7時0分"