我发现了其他一些帖子,但他们并没有找到我想要的东西。
以下是该方案:
中国的用户(虽然它可能位于世界上任何地方)将日期时间输入到代表美国当地时间的字段中。所以即使他们的本地计算机可能是在2011年2月1日上午1:11北京,该用户将于2014年2月14日上午11:11在德克萨斯州奥斯汀市进入日期时间字段。
这是我从输入字段中提取的字符串:
'2018-02-14T11:11'
如何使用moment.js确保当我将'2018-02-14T11:11'
转换为UTC时,UTC字符串总是反映奥斯汀时间,而不是北京时间?在一天结束时,我们不知道用户来自哪个时区,但我们始终知道输入的时区将处于中央标准时间。
以下似乎正在发生的事情是,当我使用它们转换为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()
到UTC:
moment.utc('2018-02-14T11:11').tz("America/Chicago").toISOString()
提前致谢!
答案 0 :(得分:2)
你关闭了 - 你将需要Moment-Timezone插件,然后就是这样:
TFDMemTable
让我们打破这一点:
moment.tz('2018-02-14T11:11', "America/Chicago").utc().format()
答案 1 :(得分:0)
只需添加我得到的另一种情况:
解析'2018-02-14Z'
,但忽略'Z'
(UTC),仅使用本地时区或指定的时区。
您可以简单地从字符串中删除'Z'或执行以下操作:
moment('2018-02-14Z', 'YYYY-MM-DD')
将忽略'Z'或任何不匹配的字符。
moment.tz('2018-02-14Z', 'YYYY-MM-DD', 'America/Chicago')
将使用给定的时区。
当然,您首先不应该这样做。应该使用正确的时区。