You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中DateTime对象比较结果不符合预期问题求助

问题排查与解决

嘿,这个问题我太熟啦!核心原因是JavaScript的Date构造函数对月份的处理有个容易踩的坑:它的月份参数是从0开始计数的——0代表1月,1代表2月,一直到11代表12月。

你看你的代码,从字符串里提取的月份是"01"(对应1月),但直接传给Date构造函数时,它会把这个值当成2月来处理!所以你的newcheckinTime实际是2018年2月26日09:45,而你测试时的当前时间是2018年1月26日下午4:10,显然当前时间的时间戳比2月的那个时间小,弹窗返回false就完全合理了。

快速修复方案

只需要把提取到的月份值减1,让它符合Date的计数规则就行:

var apptTime = "2018.01.26.08.30.10.00"; 
var checkinTime = "2018.01.26.09.45.10.00"; 
var yappt = apptTime.substring(0,4); 
// 月份减1,适配Date的0起始规则
var mappt = apptTime.substring(5,7) - 1; 
var dappt = apptTime.substring(8,10); 
var hrappt = apptTime.substring(11,13); 
var mmappt = apptTime.substring(14,16); 
var ssappt = apptTime.substring(17,19); 
var msappt = apptTime.substring(20,22); 
var ycht = checkinTime.substring(0,4); 
// 月份同样减1
var mcht = checkinTime.substring(5,7) - 1; 
var dcht = checkinTime.substring(8,10); 
var hrcht = checkinTime.substring(11,13); 
var mmcht = checkinTime.substring(14,16); 
var sscht = checkinTime.substring(17,19); 
var mscht = checkinTime.substring(20,22); 
var newapptTime = new Date(yappt,mappt,dappt,hrappt,mmappt,ssappt,msappt); 
var newcheckinTime = new Date(ycht, mcht, dcht, hrcht, mmcht, sscht, mscht); 
var currTime = new Date(); 
alert(currTime.getTime() > newcheckinTime.getTime());

这样修改后,newcheckinTime就会正确指向2018年1月26日09:45,和当前下午4:10对比时,就会返回true了。

更简洁的字符串转Date方法

其实你可以不用手动拆分字符串,把原时间格式转换成标准的ISO格式后直接传给Date,代码会更简洁,也不容易出错:

var apptTime = "2018.01.26.08.30.10.00";
// 把点替换成标准分隔符,转成ISO格式:2018-01-26T08:30:10.000
var apptISO = apptTime.replace(/\./g, '-').replace(/-/g, 'T', 3).replace(/-/g, ':').padEnd(23, '0');
var newapptTime = new Date(apptISO);

var checkinTime = "2018.01.26.09.45.10.00";
var checkinISO = checkinTime.replace(/\./g, '-').replace(/-/g, 'T', 3).replace(/-/g, ':').padEnd(23, '0');
var newcheckinTime = new Date(checkinISO);

var currTime = new Date();
alert(currTime.getTime() > newcheckinTime.getTime());

内容的提问来源于stack exchange,提问作者Someshwar Rao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:44:17