老徐WEB:js入门学习 - javascript工作中常用到的日期问题

工作中常用到的日期问题大致有两个日期间隔天数、某个日期前后几天的日期、日期格式化和日期时间戳等。


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前端开发教程】公众号,听老徐分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值