似乎是一个简单且常见的问题,但在谷歌搜索一段时间后还没有找到答案。
非常简单,我有两个变量,每个变量都有一个格式为 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");
}
上面不断返回验证成功。
有什么意见、建议吗?例子?谢谢,
最佳答案
碰巧您使用的格式可以按字典顺序进行比较。所以不需要解析:
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
}
然后使用上面的 Date.parse
处的 parseMyDate
。
关于javascript/jquery 比较日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662031/