我有两个日期格式为dd / mm / yyyy hh:mm:ss。当我使用<或者>比较,我得到错误的结果。我尝试了新的日期('dd / mm / yyyy hh:mm:ss')并比较它们仍然得到错误的结果。
任何人都可以帮忙,提前致谢。
答案 0 :(得分:3)
最简单的方法是将它们转换为Date
个对象。但是,由于您使用的是dd / mm / yyyy格式的日期,因此无法正常工作。 (默认情况下,Date
使用ISO 8601格式 - yyyy-mm-dd。因此您需要将格式转换为javascript可以理解的格式。
// convert to a parseable date string:
var dateStrA = "28/12/2013 16:20:22".replace( /(\d{2})\/(\d{2})\/(\d{4})/, "$2/$1/$3");
var dateStrB = "28/12/2013 16:20:11".replace( /(\d{2})\/(\d{2})\/(\d{4})/, "$2/$1/$3");
// now you can compare them using:
new Date(dateStrA) > new Date(dateStrB);
有点乱,但有诀窍。
请注意,使用等号进行比较(例如===
)对Date
个对象不起作用。您还可以使用Date.compare()
或转换为数字或在日期
答案 1 :(得分:1)
a_time = new Date('30/12/2013 12:12:12');
//Mon Dec 30 2013 12:12:12 GMT+0800 (CST)
b_time = new Date('30/12/2013 12:12:13');
//Mon Dec 30 2013 12:12:13 GMT+0800 (CST)
a_time > b_time
//false
b_time > a_time
//true
您可以使用moment.js来解析日期对象的任何特定格式:
a = moment('30/12/2013 01:02:03', 'DD/MM/YYYY HH:mm:ss')
b = moment('30/12/2013 01:02:04', 'DD/MM/YYYY HH:mm:ss')
a > b
//false
a < b
//true
如果您希望按原始JavaScript对象进行比较,只需使用toDate()
方法获取Date()
对象:
a = moment('30/12/2013 01:02:03', 'DD/MM/YYYY HH:mm:ss').toDate()
//Sat Mar 02 2013 01:00:00 GMT+0800 (CST)
b = moment('30/12/2013 01:02:04', 'DD/MM/YYYY HH:mm:ss').toDate()
//Sat Mar 02 2013 01:00:00 GMT+0800 (CST)
a > b
//false
a < b
//true