如何在javascript中将字符串(01/02/2013 22:13)转换为日期

时间:2014-01-03 03:11:44

标签: javascript

我有两个字符串:

var string1 = "01/02/2013 22:13";
var string2 = "08/01/2013 02:01"; 

我希望在JavaScript中转换为日期来比较2个日期。

3 个答案:

答案 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])
}

JSFiddle

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),因此最好处理服务器端的所有日期,因此浏览器只能获得(正确的)时间戳。

相关问题