似乎是一个简单且常见的问题,但谷歌搜索了一段时间后还没有得到答案。
很简单,我有两个变量,每个变量的日期时间值格式为yyyy-mm-dd hh:mm
我想比较哪个更大并相应地执行逻辑:
示例:here
var fromDate = '2014-02-14 07:00';
var toDate = '2014-02-14 07:00';
if (Date.parse(fromDate) > Date.parse(toDate)) {
alert("Invalid Date Range!\nStart Date cannot be after End Date!")
} else {
alert("VALID Date Range!\n Start Date is before End");
}
以上不断返回成功验证。
有什么建议,建议吗?例子?谢谢,
答案 0 :(得分:3)
您正在使用的格式可以通过lexigraphically进行比较。所以不需要解析:
var fromDate = '2014-02-14 07:00';
var toDate = '2014-02-14 07:00';
if (fromDate > toDate) {
alert("Invalid Date Range!\nStart Date cannot be after End Date!");
} else {
alert("VALID Date Range!\n Start Date is before End");
}
这是因为在整个字符串中,最重要的字段位于不太重要的字段之前。
但是如果确实想要日期/时间值,则规范不直接支持该字符串格式。你有三个选择:
使用像MomentJS这样的库。
按下字符串使其处于支持的格式,但请注意,在ES5之前, 没有规范所规定的标准格式。
自己动手
后者看起来像这样:
function parseMyDate(str) {
var parts = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})/.exec(str);
if (!parts) {
return null;
}
return new Date(parseInt(parts[1], 10), // Year
parseInt(parts[2], 10) - 1), // Month
parseInt(parts[3], 10), // Day
parseInt(parts[4], 10), // Hours
parseInt(parts[5], 10)); // Minutes
}
然后使用上面有parseMyDate
的{{1}}。
答案 1 :(得分:0)
这真的很难看但是有目的......
var fromDate = '2014-02-27 09:00';
fromDate=fromDate.replace("-", "/");
fromDate=fromDate.replace("-", "/");
var toDate = '2014-02-27 10:00';
toDate=toDate.replace("-", "/");
toDate=toDate.replace("-", "/");
var fromDate=(new Date(fromDate).getTime()/1000);
var toDate=(new Date(toDate).getTime()/1000);
if(fromDate>toDate){
alert('CORRECT');
} else {
alert('INCORRECT, from after to');
}