最近有一个地方需要计算过期时间,然后返回天数,但是我用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相差天数

评论

暂无评论数据

暂无评论数据

目录