javascript - Moment.js - 在世界任何地方,使用相同的时区

标签 javascript timezone momentjs

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

场景如下:

中国的用户(尽管它可能在世界任何地方)将日期时间输入到表示美国本地时间的字段中,因此即使他们的本地计算机可能是 1:11 AM 02/15/2018北京,用户正在日​​期时间字段中输入德克萨斯州奥斯汀的日期,时间为 2018 年 2 月 14 日上午 11:11。

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

我如何使用 moment.js 来确保当我将 '2018-02-14T11:11' 转换为 UTC 时,UTC 字符串始终反射(reflect)奥斯汀时间,不是北京时间?归根结底,我们不知道用户来自哪个时区,但我们始终知道输入的时区将采用中部标准时间。

下面似乎发生的事情是,当我使用这些转换为 UTC 时,日期仍然没有反射(reflect) CST,或者它们被错误地偏移了几个小时。

moment('2018-02-14T11:11').zone("美国/芝加哥").format()

moment('2018-02-14T11:11').tz("美国/芝加哥").format()

moment('2018-02-14T11:11', 'CST').tz("美国/芝加哥").format()

moment('2018-02-14T11:11', "美国/芝加哥").tz("美国/芝加哥").format()

到世界协调时间:

moment.utc('2018-02-14T11:11').tz("美国/芝加哥").toISOString()

我肯定错过了什么。任何建议将不胜感激!

提前致谢!

最佳答案

您很接近 - 您将需要 Moment-Timezone插件,然后是这样的:

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();

关于javascript - Moment.js - 在世界任何地方,使用相同的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48817730/

相关文章:

ruby - 在 Ruby 中将时间转换为用户时区中的字符串

angular - 将 Rollup 用于 Angular 2 的 AoT 编译器并导入 Moment.js

javascript - moment.calendar() 没有时间

javascript - 刻不加日

javascript - 尝试找出如何使用 Knockout 中选择的值更新隐藏输入

javascript - jQuery - 这些函数调用之间的区别

javascript - Vue.js - 当子组件在 <transition> 内时无法访问 this.$parent

javascript - 如何在 chartjs 上设置 2 个 y 轴标题(和/或标签)?

c# - NodaTime .NET Core 实现中的 BCL DateTimeZoneProvider 在哪里?

java - new Date(long) 给出不同的结果