提问人:jeremy 提问时间:6/28/2022 更新时间:6/28/2022 访问量:47
Javascript - 比较两个日期(减去 X 天)以查看它是真是假
Javascript - comparing two dates ( minus X days) to see whether it's true or false
问:
如果日期(来自 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 !!!
知道我做错了什么吗? 也许有更容易做的事情:)
谢谢!
答:
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
简单多了,似乎工作得很好,太棒了,谢谢!
评论
tc_date_verif
t_date_verif
false