Moment.JS-世界上任何地方,使用相同的时区



我找到了其他几个帖子,但它们没有我想要的特定内容。

这是场景:

中国的一个用户(尽管它可能在世界任何地方(将日期时间输入到代表美国当地时间的领域,因此,即使他们的本地机器可能是1:11 AM 02/15/2018 IN北京,用户将进入德克萨斯州奥斯汀市的日期,在2018年2月14日上午11:11进入日期时间字段。

这是我从输入字段中拉出的字符串: '2018-02-14T11:11'

如何使用Moment.js确保将'2018-02-14T11:11'转换为UTC时,UTC字符串始终反映了Austin时间,而不是北京时间?归根结底,我们不知道用户来自哪个时区,但我们将始终知道输入的时区将处于中央标准时间。

下面似乎发生的事情是,当我使用这些转换为UTC时,日期仍未反映CST,或者它们不正确地偏移了几个小时。

moment('2018-02-14T11:11').zone("America/Chicago").format()

moment('2018-02-14T11:11').tz("America/Chicago").format()

moment('2018-02-14T11:11', 'CST').tz("America/Chicago").format()

moment('2018-02-14T11:11', "America/Chicago").tz("America/Chicago").format()

to utc:

moment.utc('2018-02-14T11:11').tz("America/Chicago").toISOString()

我肯定缺少一些东西。任何建议将不胜感激!

预先感谢!

您接近 - 您将需要时刻划线插件,然后是这样:

moment.tz('2018-02-14T11:11', "America/Chicago").utc().format()

让我们分解一下:

// create the moment with a specific time zone
var m = moment.tz('2018-02-14T11:11', "America/Chicago");
// convert to UTC
m.utc();
// format the output
var s = m.format();

只需添加我得到的另一个场景:

解析'2018-02-14Z',但忽略'Z'(UTC(,只需使用本地时区或指定的时区。

您可以简单地从字符串中删除" Z"或进行这些:

moment('2018-02-14Z', 'YYYY-MM-DD')将忽略'z'或任何无与伦比的字符。

moment.tz('2018-02-14Z', 'YYYY-MM-DD', 'America/Chicago')将使用给定的时区。

当然,您不应该首先这样做。应使用正确的时区。

相关内容

  • 没有找到相关文章

最新更新