日期格式在IE7中不起作用

时间:2013-03-11 06:49:30

标签: javascript

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

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

我在Firefox和IE7上都试过了。日期a_date适用于Firefox,但在IE7中不起作用(它提供Invalid Date值),b_date适用于IE7但不适用于Firefox(它提供NaN值)。任何方式只使用一种日期格式来运行它们?

3 个答案:

答案 0 :(得分: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);

对于其他格式,您必须编写自己的转换器。例如,请参阅Convert string to date in jQuery and Internet Explorer?

答案 1 :(得分:0)

月份字段使用值0-11是definition of the Date object

我相信使用String的构造函数是依赖于系统的(更不用说依赖于区域设置/时区)了,所以你可能最好使用构造函数来指定年/月/日作为单独的参数。

BTW,在Firefox中,

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

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

 new Date(2008, 3, 2);

答案 2 :(得分: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