【发布时间】:2017-04-20 08:15:35
【问题描述】:
我有一个 DateTime 选择器,它以下列格式为 textbox 生成日期和时间,
01 May, 2017 - 03:45 pm
现在我需要检查这个 DateTime 是否超过 72 小时。为此,我在 Javascript 中使用了以下算法。
function chk() {
try {
debugger;
var a = document.getElementById("txtdate").value;
var adatepart = a.substring(0, 12).replace(",", "");
//convert date part of txtbox
var b = parseDate(adatepart);
//getting number of hours of textbox from 1 jan 1970 midnight
var seconds = new Date().getTime() / (3600 * 1000);
//getting number of hours from 1 jan 1970
var seconds1 = b.getTime() / (3600 * 1000);
//adding additional hours and 12 hours if it's past noon
seconds1 += parseInt(a.substring(15, 17)) + (a.substring(21, 23) == "pm" ? 12 : 0);
var diff = seconds1 - seconds;
if (diff > 72 || diff < 0) {
alert("The selected date and time cannot be more than 72 hours from now");
}
} catch (err) {
alert(err.message);
}
}
function parseDate(input) {
var map = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };
input = input.split(" ");
return new Date(input[2], input[1] in map ? map[input[1]] : input[1] - 1, input[0]);
}
这个算法运行良好。但我相信有一种更短的方法可以直接比较textbox 中的date.now 和datetime。也许通过 jQuery。有没有更短的方法?
【问题讨论】:
-
如果您以可以由
Date对象构造函数解析的格式存储另一个变量,您可以轻松比较两个日期对象并检查它们之间的天数是否超过 3,使其成为一个-班轮:(date2 - date1) / 1440000 -
解析是否还会考虑日期的下午 03:45 部分,因为这是必要条件。
-
试试momentjs 这对这类事情非常有用。
标签: javascript jquery date datetime