我有两个字符串:
var string1 = "01/02/2013 22:13";
var string2 = "08/01/2013 02:01";
我希望在JavaScript中转换为日期来比较2个日期。
答案 0 :(得分:2)
不要使用Date
对象来解析你的日期字符串。而是自己这样做。
下面我写了一个方法来解析你的字符串到Date
function convertToDate(datSt) {
var s1 = datSt.split(" ");
var s1dat = s1[0].split("/");
var s1Tim = s1[1].split(":");
return new Date(s1dat[2], s1dat[1], s1dat[0], s1Tim[0], s1Tim[1])
}
使用 Date.getTime()
返回毫秒,以便您可以非常轻松地执行日期比较。
if (d1.getTime() > d2.getTime()) {
//do whatever
} else if (d1.getTime() < d2.getTime()) {
//do whatever
} else {
//do whatever
}
最后,
var string1 = "01/02/2013 22:13";
var string2 = "08/01/2013 02:01";
var d1 = convertToDate(string1);
var d2 = convertToDate(string2);
//getTime returns milliseconds, which can used for comparison
if (d1.getTime() > d2.getTime()) {
//do whatever
} else if (d1.getTime() < d2.getTime()) {
//do whatever
} else {
//do whatever
}
// Below is the method to split your string to Date object
function convertToDate(datSt) {
var s1 = datSt.split(" ");
var s1dat = s1[0].split("/");
var s1Tim = s1[1].split(":");
return new Date(s1dat[2], s1dat[1], s1dat[0], s1Tim[0], s1Tim[1])
}
FYI:您无法使用Date对象执行权益(==
)操作。其他人(>
和<
)可以执行,请按此comment了解原因。
如果你想使用插件,我更希望moment.js进行简单的解析。
答案 1 :(得分:0)
在JS中解析日期字符串很难。首先,您需要知道字符串代表的格式 - 您发布的格式不明确。像http://momentjs.com/docs/#/parsing/这样的图书馆可以帮助各种明确的形式。绝对使用库是因为这个东西很棘手,浏览器在实现'标准'函数如Date.parse
方面不一致答案 2 :(得分:-1)
var date1 = new Date(string1); //Turn it into a date
var date2 = new Date(string2); //Turn the other thing into a date
console.log(Math.abs(date1 - date2)); //Take the absolute value of the subtraction
正如@RobertLevy所指出的,这可能不起作用,具体取决于用户的文化。 (D / M / Y与M / D / Y),因此最好处理服务器端的所有日期,因此浏览器只能获得(正确的)时间戳。