【问题标题】:Converting UTC to Pacific time using Moment Timezone (javascript)使用 Moment Timezone (javascript) 将 UTC 转换为太平洋时间
【发布时间】:2014-11-25 20:52:16
【问题描述】:

我正在尝试将“formattedLocalTime”设置为太平洋时间,我的 4 行代码如下所示。

虽然 chrome 调试器将“locTime”显示为“2014 年 9 月 30 日星期二 16:17:25”,这是我期望的正确值,但最后一行中的 formattedLocalTime 是“09/30/2014 11:17 pm”是 UTC 时间,而不是我设置的时区(America/Los_Angeles),它应该是“09/30/2014 4:17 pm”(4:17 而不是 11:17)

非常感谢任何建议。

var timestamp = 1412144245453;                      // Tue Sep 30 2014 23:17:25
var utc = moment.tz(timestamp, "Etc/UTC");          // Tue Sep 30 2014 23:17:25 (displayed in chrome debugger)
var locTime = utc.clone().tz("America/Los_Angeles"); // Tue Sep 30 2014 16:17:25 (displayed in chrome debugger)
var formattedLocalTime = moment(locTime).format("MM/DD/YYYY h:mm a")

【问题讨论】:

    标签: javascript angularjs timezone momentjs


    【解决方案1】:

    您可以一步完成:

    moment.tz(1412144245453, 'America/Los_Angeles').format('MM/DD/YYYY h:mm a')
    

    输出:"09/30/2014 11:17 pm"

    另外,您错误地评估了此时间戳的时间。在 UTC 中,此时间戳为 2014 年 10 月 1 日上午 6:17:25。对应的太平洋时间确实是 2014 年 9 月 30 日晚上 11:17:25。

    您可以使用epochconverter.com 之类的网站或在moment.js 中进行检查:

    moment.utc(1412144245453).format()   // "2014-10-01T06:17:25+00:00"
    

    【讨论】:

    • 谢谢你,马特……你说得对。从数据库获取的时间没有设置时区,Oracle 隐含地添加了本地时区 (PDT)。 “您可以使用 epochconverter.com 之类的网站进行检查”成功了。
    【解决方案2】:

    尝试使用:

    var formattedLocalTime = locTime.format("MM/DD/YYYY h:mm a")
    

    如果你写了 moment(locTime) 那么你的 datetime 将被转换回本地时间

    【讨论】:

    • 谢谢@MajoB。 locTime.format("MM/DD/YYYY h:mm a") 但是仍然返回 "09/30/2014 11:17 pm"
    猜你喜欢
    • 2011-03-13
    • 2021-03-02
    • 2018-09-15
    • 2012-12-08
    • 1970-01-01
    • 2021-09-05
    • 2018-04-25
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多