从日期javascript获取毫秒

时间:2011-07-29 08:20:42

标签: javascript date

我有这样的日期格式2011-07-29T08:18:39

我想将此日期转换为毫秒 我试试

var myDate = '2011-07-29T08:18:39';    
new Date(myDate.replace("T"," ")).getTime()

但是给我看NaN。 请帮忙 感谢

3 个答案:

答案 0 :(得分:6)

T.J。是对的;我的原始解决方案在IE9和Safari中失败了。这样做,并适用于所有主流浏览器。

var myDate = '2011-07-29T08:18:39';    

function parseDate(dateString){
    var time = Date.parse(dateString);
    if(!time){
        time = Date.parse(dateString.replace("T"," "));
        if(!time){
            bound = dateString.indexOf('T');
            var dateData = dateString.slice(0, bound).split('-');
            var timeData = dateString.slice(bound+1, -1).split(':');

            time = Date.UTC(dateData[0],dateData[1]-1,dateData[2],timeData[0],timeData[1],timeData[2]);
        }
    }
    return time;
}

var milliseconds = parseDate(myDate);

答案 1 :(得分:5)

问题是没有得到毫秒(你正在做的那样),它正在得到日期。

许多浏览器仍然不支持该字符串格式,包括所有已发布的IE版本,甚至是IE9。那是因为ISO-8601风格的格式仅在大约一年半前的第5版中添加到规范中;在此之前,之前的规范只是说他们必须接受任何Date#toStringDate#toUTCString吐出,而那些被定义为“依赖于实现”的字符串。例如,你不能依赖他们的格式。完全没有。

直到第5版规范中的更改被更广泛地实施(然后几年过去,直到较旧的浏览器仍未被相当大一部分用户库使用),您将不得不自己解析该格式,或者使用像DateJS之类的东西为你做这件事。

DateJS真的非常酷,但是如果你不想使用它,解析那种格式很容易,只要你的来源总是给你那种格式(live copy):

var myDate, parts, date, time, dt, ms;

myDate = '2011-07-29T08:18:39';
parts = myDate.split(/[T ]/); // Split on `T` or a space to get date and time
date = parts[0];
time = parts[1];

dt = new Date();

parts = date.split(/[-\/]/);  // Split date on - or /
dt.setFullYear(parseInt(parts[0], 10));
dt.setMonth(parseInt(parts[1], 10) - 1); // Months start at 0 in JS
dt.setDate(parseInt(parts[2], 10));

parts = time.split(/:/);    // Split time on :
dt.setHours(parseInt(parts[0], 10));
dt.setMinutes(parseInt(parts[1], 10));
dt.setSeconds(parseInt(parts[2], 10));

ms = dt.getTime(); // or ms = +dt; if you want to be l33t about it

答案 2 :(得分:-1)

使用向前笔画 javascript:alert((新日期('2011/07/29 08:18:39'))。getTime());

new Date('2011/07/29T08:18:39'.replace("T"," ")).getTime()

给出1311923919000.这适用于Safari。