我找到了其他几个帖子,但它们没有我要找的内容。
场景如下:
中国的用户(尽管它可能在世界任何地方)将日期时间输入到表示美国本地时间的字段中,因此即使他们的本地计算机可能是 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/