我找到了另外几个帖子,但他们并没有我想要的东西。
下面是一个场景:
中国的一位用户(尽管可能在世界任何地方)将一个日期时间输入到一个代表美国本地时间的字段中。因此,即使他们的本地机器可能是北京的1:11 AM 02/15/2018,用户正在将德克萨斯州奥斯汀的一个日期输入到date time字段。
这是我从输入字段中提取的字符串:'2018-02-14T11:11'
如何使用moment.js确保当我将'2018-02-14T11:11'转换为UTC时,UTC字符串总是反映奥斯汀时间,而不是北京时间?最后,我们将不知道用户来自哪个时区,但我们将始终知道输入的时区将位于中央标准时间。
下面发生的事情似乎是,当我使用这些转换到世界协调时,日期仍然没有反映科技委,或者他们被错误地抵消了几个小时。
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()
世界协调时:
moment.utc('2018-02-14T11:11').tz("America/Chicago").toISOString()
我肯定漏掉了什么。如有任何建议,将不胜感激!
提前感谢!
发布于 2018-02-16 15:06:16
你已经接近了-你需要时刻-时区加载项,然后它是这样的:
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();发布于 2020-03-11 05:14:05
再加上我得到的另一个场景:
解析'2018-02-14Z'__,但忽略'Z' (UTC),只使用本地时区或指定的时区。
您可以简单地从字符串中删除'Z‘,或者执行以下操作:
moment('2018-02-14Z', 'YYYY-MM-DD')将忽略“Z”或任何不匹配的字符。
moment.tz('2018-02-14Z', 'YYYY-MM-DD', 'America/Chicago')将使用给定的时区。
当然,你一开始就不应该这么做。应该使用正确的时区。
https://stackoverflow.com/questions/48817730
复制相似问题