JS获取本地日期,精确到天

起因

两个选择时间范围的组件,需要判断开始时间和结束时间不能超过三天,以每天的0点为分界。
为了时间的精确性,我用组件的传值生成Date对象,再getTime()获取时间戳。用时间戳转换为天数进行比较。
但是,同样的一天,早上8点前和8点后,算出来的天数居然是不一样的。

var startStamp1 = new Date("2023-06-29 05:05:05").getTime();
var startStamp2 = new Date("2023-06-29 10:10:10").getTime();

startStamp1=Math.floor(startStamp1/(1000*60*60*24));//19536
startStamp2=Math.floor(startStamp2/(1000*60*60*24));//19537

解决方法

new Date()生成的是本地时间,getTime()获取的是格林威治标准时间戳,这两个时间是有时差的。
用getTimezoneOffset()可以获取这个时间差,单位是分钟。

var startStamp = new Date("2023-06-29 05:05:05").getTime();
var offset = new Date().getTimezoneOffset();//时间偏移量(分钟)

startStamp = startStamp/(1000*60) - offset;//分钟,消除偏移后
startStamp=Math.floor(startStamp/(60*24));//19537
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值