0

我只想要比较两个日期的时间戳,但它不会将字符串转换为日期。我试过这段代码:

var a_date = new Date('2013-03-25');
var b_date = new Date('25-03-2013');
alert(a_date + '***' + b_date);

我在 Firefox 和 IE7 上都试过了。Datea_date在 Firefox 中有效,但在 IE7 中无效(它提供Invalid Date价值),b_date在 IE7 上有效,但在 Firefox 中无效(它提供NaN价值)。有什么方法可以只使用一种日期格式来运行两者?

4

3 回答 3

1

实例化日期有四种方法(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date):

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);

对于其他格式,您必须编写自己的转换器。请参阅在 jQuery 和 Internet Explorer 中将字符串转换为日期?例如

于 2013-03-11T06:55:04.077 回答
0

使用值 0-11 作为月份字段是 Date 对象的定义。

我相信使用 String 的构造函数依赖于系统(更不用说依赖于语言环境/时区),因此您最好使用将年/月/日指定为单独参数的构造函数。

顺便说一句,在 Firefox 中,

new Date("04/02/2008");

对我来说很好 - 它会解释斜杠,但不会解释连字符。我认为这证明了我的观点,即使用 String 构造 Date 对象是有问题的。改为使用月/日/年的显式值:

 new Date(2008, 3, 2);
于 2013-03-11T06:58:00.143 回答
0

它的工作由我执行此代码:

var a_date = document.getElementById('Date_From').value;
var parts1 = a_date.split('-'); 
var b_date = document.getElementById('Date_To').value;
var parts2 = b_date.split('-');

var a_date_1 = new Date( parseInt( parts1[0], 10 ), parseInt( parts1[1], 10 ) - 1, parseInt( parts1[2], 10 ) );
var a_date_2 = new Date( parseInt( parts2[0], 10 ), parseInt( parts2[1], 10 ) - 1, parseInt( parts2[2], 10 ) );
       var date1 = a_date_1.getTime();
       var date2 = a_date_2.getTime();

   if(date1 <= date2) {
      return true;
    } else {
        return false;
    }         

特别感谢@Salman A 和@Juhana

于 2013-03-11T09:17:47.960 回答