Javascript - 比较两个日期(减去 X 天)以查看它是真是假

Javascript - comparing two dates ( minus X days) to see whether it's true or false

提问人:jeremy 提问时间:6/28/2022 更新时间:6/28/2022 访问量:47

问:

如果日期(来自 cookie)早于 2 天,我正在尝试执行代码。或多或少,它不一定是精确的。

cookie值为:2022-06-27T23:28:02.816Z

function getCookie(name) {
    var value = "; " + document.cookie;
    var parts = value.split("; " + name + "=");
    if (parts.length == 2) return parts.pop().split(";").shift();
}

用:

getCookie(name) and : .slice(0, 10);

回报 : 2022-06-27 因此,我现在有一个 YYYY-MM-DD 值

var stuff_cookiename = getCookie("cookiename").slice(0, 10);

转换为日期格式 :

var t_date_refuscmp_todate = Date.parse(stuff_cookiename);

我现在有这样的东西:1656288000000

现在我想比较一下现在的日期 - 2 天 所以我这样做:

var t_date_verif = new Date();
var t_date_verif_format = tc_date_verif.setDate(tc_date_verif.getDate() - 2);
                                            

这给我带来了类似的东西:1656199936800

=====================

但是,如果我将我的 cookiedate 与 todaysdate -2 天进行比较,它似乎并不总是正常工作。

t_date_refuscmp_todate < t_date_verif_format !!!

知道我做错了什么吗? 也许有更容易做的事情:)

谢谢!

JavaScript 日期 日期时间 比较

评论

0赞 Barmar 6/28/2022
错别字:应该是 .这是在真实代码中还是复制错误?tc_date_verift_date_verif
0赞 Barmar 6/28/2022
你期待什么结果,你得到的是什么?在我修复错别字后,我得到,这是意料之中的。false
0赞 jeremy 6/29/2022
当我处理我的 stackoverflow 问题时确实是一个错别字,但谢谢!

答:

0赞 collapsar 6/28/2022 #1

想法

解析 cookie 和当前日期时间,将其转换为纪元毫秒,以天为单位计算差异。

法典

let s_dtCookie    = "2022-06-27T23:28:02.816Z"
  , n_epochCookie = (new Date(s_dtCookie)).getTime()
  , n_epochNow    = (new Date()).getTime()
  , n_deltaDays   = (n_epochNow - n_epochCookie) / (24 * 3600 * 1000)
  ;

console.log(`Cookie time '${s_dtCookie}' is ${n_deltaDays} days in the past.`);

 

参考

MDN JS 文档,Date.getTime() 部分。

评论

0赞 jeremy 6/29/2022
另一种方式,谢谢@collapsar!
1赞 codeboi 6/28/2022 #2

^ 在我看来,一个更具体(针对你的问题)和更简单的答案

var diff = Date.now() - new Date("2022-06-25T23:28:02.816Z");

if(diff <= 1000 * 60 * 60 * 24 * 2){
    console.log("less than 2 days old");
}else{
    console.log("more than 2 days old");
}

评论

0赞 jeremy 6/29/2022
简单多了,似乎工作得很好,太棒了,谢谢!