【问题标题】:Converting an ISO 8601 string to Current TimeZone DateTime Object in Javascript在 Javascript 中将 ISO 8601 字符串转换为当前时区 DateTime 对象
【发布时间】:2015-06-11 02:24:31
【问题描述】:

我正在编写一个 NodeJS 应用程序,它根据最近上传的 youtube 视频发送通知。

我从 youtube 获得了 2015-06-10T20:18:45.000Z 这个 ISO 8601 格式字符串。该字符串是视频上传的时间。

如何获取该字符串,将其转换为我当地时区的 Date 对象,获取时间。那么看看从现在开始多久之前的视频是准确上传的?

我基本上需要知道从现在开始上传视频的确切时间。如果有与我上面描述的方式不同的方式,那也很好。

我试过了,但它不起作用 - 因为我相信时区差异

var temp_one = new Date('2015-06-10T20:18:45.000Z');
var temp_two = new Date();
var difference = temp_two - temp_one

【问题讨论】:

    标签: javascript date datetime timezone momentjs


    【解决方案1】:

    您所描述的内容确实有效 - 只要浏览器支持解析您提供的 ISO8601 格式字符串。较旧的浏览器(例如 IE8)不直接支持此功能。

    difference 变量将返回自您提供的日期以来经过的毫秒数。如果你想要它在一些其他的单位,你可以相应地划分数字:

    var seconds = difference / 1000;
    var minutes = difference / 60000;
    var hours = difference / 3600000;
    

    如果您想要更详细的内容,可以使用moment.js

    例如:

    moment("2015-06-10T20:18:45.000Z").fromNow()  // "7 hours ago"
    

    【讨论】:

    • 嘿,我提到的确实转换了它,但它转换错了。如何从时刻获得数值?
    • “转换错误”是什么意思。请展示你得到的和你期望的。你所说的“数值”是什么意思——如果你的意思是自 Unix 纪元以来的毫秒数——那么使用.valueOf()。 (是in the docs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2019-06-12
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多