前端js关于计算日期差计算相差一天踩的坑,帮大家避避雷

        最近的项目同事反馈日期计算少了一天,经过研究是因为我们内部定义的日期格式是2023-05-05这种格式,而对接方公司返回的日期是2023/5/5这种格式。导致问题的原因是在前端javascript处理日期的时候,会将日期转化为时间戳,再进行计算后再从时间戳转化为我们自己的时间格式。这两种统一日期不同时间格式转换成的时间戳相差8个小时:

        因此,两个不同时间格式在后台计算是没有问题的,在javascript就存在八小时的误差,如果以天为单位就会存在一天的误差。在了解了问题的原因之后,最简单的方式就是把时间格式改为一致,因为我们系统所有时间格式为2023-05-05这种只有一个时间是取的对接平台的日期,本人解决思路如下:

var a1 = Date.parse(new Date(startDate)); //起始日期startDate格式为yyyy-mm-dd
var a2 = Date.parse(new Date(formatDate(endDate))); //结束日期endDate格式不确定
var day = parseInt((a2-a1)/ (1000 * 60 * 60 * 24));//时间戳相减,然后除以天数//将日期格式转化为yyyy-mm-dd
function formatDate(date) {var d = new Date(date),month = '' + (d.getMonth() + 1),day = '' + d.getDate(),year = d.getFullYear();if (month.length < 2) month = '0' + month;if (day.length < 2) day = '0' + day;return [year, month, day].join('-');}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部