我只想要时间戳来比较两个日期,但它不会将字符串转换为日期。我试过这段代码:
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
值)。任何方式只使用一种日期格式来运行它们?
答案 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