工作中常用到的日期问题大致有两个日期间隔天数、某个日期前后几天的日期、日期格式化和日期时间戳等。
javascript没有直接的函数来处理这些问题,老徐根据之前工作经验,把这些问题的解决方法总结一下,希望对大家有用。
计算两个日期间隔天数,包括当天和某一天,参数是日期字符串。
function intvalDays(date1,date2){
var days = 0;
var d1 = Date.parse(date1);
var d2 = Date.parse(date2);
console.log(d1);
console.log(d2);
d1 = Math.floor(d1/24/60/60/1000);
d2 = Math.floor(d2/24/60/60/1000);
console.log(d1);
console.log(d2);
if(d1 < d2){
days = d2-d1-1;
}else if(d1 == d2){
days = 0;
}else{
days = d1-d2-1;
}
return days;
}
var d = intvalDays('2020-05-10 00:20:30','2020-05-12 23:03:08');
console.log(d);
var d = intvalDays('2020-05-12 22:20:30','2020-05-12 00:03:08');
console.log(d);
计算当前日期前/后几天的日期,参数是正负整数。
function nowIntvalDate(intval){
var d1 = new Date();
d1.setMonth(d1.getMonth(),d1.getDate()+intval);
return d1;
}
var d = nowIntvalDate(7);
console.log(d);
计算某个日期前/后几天的日期,参数是某字符串日期和正负整数。
function dateIntvalDate(date,intval){
var d1 = new Date(date);
d1.setMonth(d1.getMonth(),d1.getDate()+intval);
return d1;
}
var d = dateIntvalDate('2020-05-03',7);
console.log(d);
时间戳格式化日期,参数是时间戳和格式。有如下规则。
YYYY:表示年份
MM:表示月份
DD:表示日期
hh:表示小时
ii:表示分钟
ss:表示秒数
SS:表示毫秒
function dateFormat(timestamp,fmt){
var d = new Date(timestamp);
var dateObj = {
YYYY:d.getFullYear(),
MM:d.getMonth() + 1,
DD:d.getDate(),
hh:d.getHours(),
ii:d.getMinutes(),
ss:d.getSeconds(),
SS:d.getMilliseconds()
}
for(k in dateObj){
var e = dateObj[k];
var k = "/"+k+"/";
fmt = fmt.replace(eval(k),e);
}
return fmt;
}
var date = dateFormat(1592997146479,'YYYY年MM月DD日');
console.log(date);
var date = dateFormat(1592997146479,'YYYY-MM-DD hh:ii:ss');
console.log(date);
把日期转成时间戳
var date = new Date('2020-6-24 19:12:26:479');
var timestamp1 = date.getTime(); // 1592997146479
var timestamp2 = date.valueOf(); // 1592997146479
var timestamp3 = Date.parse(date); // 1592997146000
勤学苦练,笨鸟先飞。关注【老徐WEB前端开发教程】公众号,听老徐分享。