gpt4 book ai didi

javascript - 日期负 30 天误差

转载 作者:行者123 更新时间:2023-12-02 17:33:21 25 4
gpt4 key购买 nike

我正在开发这个函数,它将今天的日期与到期日期进行比较。输入:expireStamp,是以毫秒为单位的时间戳。

compDate = function(expireStamp) {
// expireStamp is a timestamp, convert it
var expireDate = new Date(expireStamp);
var notifyDate = new Date().setDate(expireDate.getDate() - 30);
var today = new Date(); // today

console.log("Today: " + today);
console.log("Notify: " + new Date(notifyDate));
console.log("Expire: " + expireDate);

if(today.getTime() <= notifyDate) {
// date is still good
return "good";
} else {
// date may be expired
if(today.getTime() > notifyDate && today.getTime() <= expireDate.getTime()) {
// date soon to expire
return "soon";
} else if(today.getTime() > expireDate.getTime()){
// date has expired
return "fail";
}
}
}

有 2 个日期可以对照今天的日期进行检查:到期日期和到期日期前 30 天的通知日期。我遇到的问题是通知日期。如果我将到期日期设置得太远,通知日期就会变得很奇怪。以下是一些测试示例:

> var exp = new Date(1409362782000)
undefined
> exp
Fri Aug 29 2014 21:39:42 GMT-0400 (Eastern Daylight Time)
> var notify = new Date().setDate(exp.getDate() - 30);
undefined
> notify
1396183229815
> var test = new Date(notify);
undefined
> test
Sun Mar 30 2014 08:40:29 GMT-0400 (Eastern Daylight Time)

因此,我使用以毫秒为单位的时间戳将过期日期设置为 8 月 29 日(今天是 2014 年 4 月 4 日)。那是相当长的 future 。如您所见,exp 是正确的。

通知日期应该是到期前 30 天,但通知日期是 3 月 30 日,我确信比 8 月 29 日早了 30 天以上。日期接近今天就可以了。

我需要通知日期为到期日期前 30 天

最佳答案

> exp = new Date(1409362782000)
Sat Aug 30 2014 05:39:42 GMT+0400 (MSK)
> notify = new Date(exp.getTime() - (30 * 24 * 60 * 60 * 1000))
Thu Jul 31 2014 05:39:42 GMT+0400 (MSK)

关于javascript - 日期负 30 天误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com