javascript - Moment Timezone JS,返回 Javascript 日期

标签 javascript datetime timezone momentjs datetime-format

我们将一个 JSON 日期传递给 Moment Timezone JS。 我们在 moment.tz() 调用中设置我们的时区,以指定我们希望时间显示给每个人的时区,而不管用户的本地时区是什么。 我们的问题是我现在想将它转换回默认的 Javascript 时间格式,但保留 moment.tz() 指定的时区。我尝试将 moment.tz() 包装在一个新的 Date() 中并附加 .toDate() 但这只是从用户计算机输出本地日期(我将我的机器时区设置为我自己的时区以外的其他时间来测试这个)。我想要它做的是给我指定的特定时区日期/时间,作为我在 Moment 中指定的时间。

我的输出示例。

 //1504897200000 = 1:00 pm on Friday September 8, 2017
  var eventTimeDate = moment.tz(1504897200000, "America/Denver").format('h:mm A');

现在我想把我的 JSON 日期转换回默认的 Javascript 格式,它应该是:

Fri Sep 08 2017 13:00:00 GMT-0600 (Mountain Daylight Time)

但是如果我在我的本地计算机上更改我的时区,它会显示为我的计算机设置的时区而不是我在 Moment.js 中设置的时区

因此,如果我将时区设置为都柏林,尝试使用 moment.tz() 方法转换 Moment 时间

     var eventTimeDateValue = moment.tz(1504897200000, "America/Denver").toDate(); 

输出:

 Fri Sep 08 2017 20:00:00 GMT+0100 (GMT Daylight Time)

这与我在 Moment JS 中的“美国/丹佛”设置不匹配。我希望它是:

Fri Sep 08 2017 13:00:00 GMT-0600 (Mountain Daylight Time)

关于如何将其转换回长格式但仍保留 Moment JS 设置时区的任何想法?

这是我的 JSFiddle:

https://jsfiddle.net/549La2ct/

最佳答案

如果您使用 toDate(),它会创建一个 JavaScript Date 对象,并且它不提供按照您想要的方式控制输出的方法。

如果您想要一个所需格式的字符串,您可以使用 format() 方法,使用 addition suggested in the docs获取时区长名称:

var abbrs = {
    EST : 'Eastern Standard Time',
    EDT : 'Eastern Daylight Time',
    CST : 'Central Standard Time',
    CDT : 'Central Daylight Time',
    MST : 'Mountain Standard Time',
    MDT : 'Mountain Daylight Time',
    PST : 'Pacific Standard Time',
    PDT : 'Pacific Daylight Time',
};

moment.fn.zoneName = function () {
    var abbr = this.zoneAbbr();
    return abbrs[abbr] || abbr;
};

var str = moment.tz(1504897200000, "America/Denver").format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ (zz)');

变量 str 的值为:

Fri Sep 08 2017 13:00:00 GMT-0600 (Mountain Daylight Time)

关于javascript - Moment Timezone JS,返回 Javascript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46006531/

相关文章:

javascript - 想知道为什么这个 jQuery 不起作用?

Python的 `fromtimestamp`做离散跳转

java - ZoneId ID 的本地化名称

javascript - 如何将时间从一个时区转换为另一个时区,忽略本地时区?

iphone - NSDate 和不同的时区?

javascript - 需要 Jquery 在 DIV 中更改我的背景图像

javascript - 在 Javascript 中关闭模态框

mysql - PHPmyadmin 返回 0000-00-00 00 :00:00 in the date after importing

javascript - Onmouseover 可以在超链接之外使用吗?

r - 是否有 R 函数来解析包含不同格式日期的向量?