2

好的,我无法理解这一点,我看了很多关于 SF 的帖子,但无法弄清楚。

我需要比较两个日期和时间,开始和结束。如果 end 很好,那么 alert();

适用于 Chrome 但不适用于 IE(9)(格式为:2013 年 1 月 1 日 10:00)

var stDate = new Date(date +" "+ start);
var enDate = new Date(dateEnd + " "+ end);

        if ( Date.parse ( enDate ) > Date.parse ( stDate ) ) {
            alert('on no');
        }

请帮忙,我卡住了...

4

3 回答 3

3

只需制作一个自定义解析器,它比试图弄清楚不同的浏览器如何处理各种时间字符串格式更快:

function parse(datestring){
    var months = {"Jan":0,"Feb":1,"Mar":2,"Apr":3,"May":4,"Jun":5,"Jul":6,"Aug":7,"Sep":8,"Oct":9,"Nov":10,"Dec":11}
    var timearray = datestring.split(/[\-\ \:]/g)
    return Date.UTC(timearray[2],months[timearray[1]],timearray[0],timearray[3],timearray[4])
}

这将返回以毫秒为单位的 Unix 时间,并且它使用 UTC,从而避免因缺少夏令时时间而引起的并发症。它适用于您指定的格式,但不验证输入。

于 2013-01-11T22:10:39.510 回答
2
if ( enDate.getTime() > stDate.getTime() ) {
    alert('oh no');
}

推送到数字(+enDate)与使用.getTime()方法相同:

if ( +enDate > +stDate ) {
    alert('oh no');
}
于 2013-01-11T20:52:40.580 回答
0
var stDate = new Date(date +" "+ start);
var enDate = new Date(dateEnd + " "+ end);

        if ( enDate.getTime() > stDate.getTime() ) {
            alert('on no');
        }

创建日期对象:

var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

getTime() 返回自 1970/01/01 以来的毫秒数

于 2013-01-11T20:57:59.247 回答