javascript/jquery 比较日期时间值

标签 javascript jquery validation datetime

似乎是一个简单且常见的问题,但在谷歌搜索一段时间后还没有找到答案。

非常简单,我有两个变量,每个变量都有一个格式为 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");
}

这是因为在整个字符串中,最重要的字段位于不太重要的字段之前。

但是,如果您确实想要日期/时间值,则规范不直接支持该字符串格式。您有三个选择:

  1. 使用像 MomentJS 这样的库。

  2. 调整字符串,使其采用受支持的格式,但请注意,在 ES5 之前,规范没有规定了标准格式。

  3. 自己做

后者看起来像这样:

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/

相关文章:

php - 如何验证 laravel 中插入的图像数组并需要根据验证插入枚举值?

javascript - 正则表达式验证angularjs中的整个多行文本

javascript - Javascript 中的神经网络无法正常学习

java - 如何避免我们的用户没有多选项卡?

javascript - Bootstrap 模态自动在第二个打开模态时添加右边距

javascript - iOS 7 记住这张卡片回调

javascript - 使用 JavaScript 在 HTML 中搜索 XML

javascript - NodeJS,在 While 循环中向 Promise 添加操作

javascript - 获取点击元素的ID名称

javascript - 如何在提交之前使用 javascript 验证 jsp 中的表单