【问题标题】:javascript to convert an array of local dates and times to UTC in milliseconds since 1-1-1970?自 1970 年 1 月 1 日以来,javascript 以毫秒为单位将本地日期和时间数组转换为 UTC?
【发布时间】:2015-05-18 15:14:12
【问题描述】:

给定东部标准时间的日期和时间数组,例如...

var dates = [
new Date(2015, 6, 15, 14, 00, 00),
new Date(2015, 6, 15, 18, 30, 30),
new Date(2015, 7, 30, 0, 15, 52),
new Date(2015, 9, 8, 10, 08, 38)];

如何将这些即将到来的日期转换为自 1970 年 1 月 1 日以来以毫秒为单位的 UTC,并将这些值保存在新数组中?

感谢您的帮助。

【问题讨论】:

    标签: javascript date datetime time


    【解决方案1】:

    【讨论】:

    • 时区呢?
    • Date() 构造函数如果使用超过 1 个参数调用将使用本地时区
    • 我认为 OP 提到的时间是美国东部标准时间,他希望结果是世界标准时间。
    • 来自参考:getTime() 方法返回的值是自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。
    • 他的问题特别指出他的 Date 对象已经在 EST 中,并且 getTime() 函数返回 UTC 中的毫秒数。
    【解决方案2】:

    只需使用减法运算符即可。

    var oldDate = new Date(1970, 0, 1);
    var newDates = []
    for(var i = 0; i < dates.length; i++) {
        newDates.push(dates[i] - oldDate);
    }
    

    编辑:刚刚意识到您想修改原始数组 编辑:误读了问题

    【讨论】:

    • @A1rPun 你说得对。这是在我喝咖啡之前写的。
    【解决方案3】:

    迭代数组,使用 date.getTime() 获取 1-1-1970 的秒数,然后将其推入新数组。

    小提琴:http://jsfiddle.net/h22f5rw8/

    编辑

    JSFiddle 出现故障或无法访问时的代码:

    var dates = [
        new Date(2015, 6, 15, 14, 00, 00),
        new Date(2015, 6, 15, 18, 30, 30),
        new Date(2015, 7, 30, 0, 15, 52),
        new Date(2015, 9, 8, 10, 08, 38)
    ];
    
    var dates_ms = [];
    
    dates.forEach( function(datum) {
        dates_ms.push(datum.getTime());
    });
    
    console.log( dates_ms );
    

    输出:[1436961600000, 1436977830000, 1440886552000, 1444291718000]

    【讨论】:

      【解决方案4】:

      你可以这样做

      var timestamps = dates.map(function(d){return +d});
      

      【讨论】:

        猜你喜欢
        • 2012-07-06
        • 2012-01-19
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        • 2011-08-06
        • 1970-01-01
        • 2014-04-28
        • 1970-01-01
        相关资源
        最近更新 更多