木灵鱼儿

木灵鱼儿

阅读:839

最后更新:2020/12/08/ 11:51:09

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");

版权申明

本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

关于作者

站点职位 博主
获得点赞 61
文章被阅读 839

相关文章

目录树