js時間YYYY-MM-DD轉換爲英文顯示,其他日期處理函數

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分"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章