【问题标题】:Format datetime with moment.js to show timezone使用 moment.js 格式化 datetime 以显示时区
【发布时间】:2015-10-28 11:31:49
【问题描述】:

我在使用 moment.js 显示时区时遇到问题。

我尝试使用此代码:

var result = moment(someDate).format("MM/DD/YYYY HH:mm A Z");

我得到回报,例如:08/05/2015 06:18 PM +02:00,这很好,但我希望我的输出类似于08/05/2015 06:18 PM WEDT 或类似的东西,带有时区的缩写。

尝试使用此代码,但最后我得到空时区:

var result = moment(someDate).format("MM/DD/YYYY HH:mm A z"); 

var result = moment(someDate).format("MM/DD/YYYY HH:mm A zz");

更新

正如@Matt Johnson 建议的那样,我使用这种方法来显示时区,使用moment-timezone-with-data.jstzdetect.js

var tzName = tzdetect.matches()[0];
var result = moment.tz(myDate, tzName).format("MM/DD/YYYY h:mm A zz");

【问题讨论】:

    标签: javascript timezone momentjs


    【解决方案1】:

    in the documentation所述:

    注意:从 1.6.0 开始,z/zz 格式标记已被弃用。 Read more about it here.

    一般问题是浏览器无法通过一致的 API 获得时区缩写。为了提供它们,必须有一个外部数据源。

    您可能想研究使用moment-timezone 插件。它提供时区信息,包括缩写。您必须知道您正在使用的特定时区。例如:

    moment.tz("2015-08-05T00:00:00+01:00", "Europe/London").format("MM/DD/YYYY hh:mm A z");
    // "08/05/2015 12:00 AM BST"
    

    此外,您不应将HH(24 小时制的小时数)与A(上午/下午 12 小时的指示符)混用。要么使用 hhA,要么使用 HH 而不使用 A

    【讨论】:

    • 感谢您的解释,我只是在这里阅读您的其他答案:stackoverflow.com/a/28377706/1081079 我认为我可以结合这两种方法来获得我需要的东西。
    • 谢谢,我忘了那个。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2023-03-12
    • 2020-07-06
    • 2018-06-26
    • 2017-05-23
    相关资源
    最近更新 更多