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