moment的diff计算相差几天,结果返回的值差一天的解决办法
最近有一个地方需要计算过期时间,然后返回天数,但是我用diff计算,得到的结果就是和后端算的相差一天。
//后端返回的时间
const endTime = "2021-12-04";
//前端获取当前时间
const startTime = Date.now(); //或者new Date().getTime()
//计算结果
const day = moment(endTime).diff(startTime,"days");
得到的结果,永远是差一天的结果。
比如今天是时间是:2020-12-08 10:46:00
,转为时间戳为:1607395560000
计算相差天数就是为:360
,按道理应该是361的
原因
因为我们的当前时间是带有小时分钟的,而后端给的,是一个整的日期,这就导致两边的值其实是不对等的,减去的小时导致这一天的时间不足一天,就被省略不计,所以得到的时候总是和正确时间相差一天。
解决办法
我们将今天的时间,转为和后端返回的时间一样就可以了。
//后端返回的时间
const endTime = "2021-12-04";
//前端获取当前时间
const startTime = moment(Date.now(),"YYYY-MM-DD");
//计算结果
const day = moment(endTime).diff(startTime,"days");
这样结果就对了。
其实moment本身是可以直接返回当前时间的,所以获取当前时间可以这样写
const startTime = moment().format("YYYY-MM-DD");
分类:
JavaScript
标签:
时间戳momentdiff相差天数
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据