我找到了其他几个帖子,但它们没有我想要的特定内容。
这是场景:
中国的一个用户(尽管它可能在世界任何地方(将日期时间输入到代表美国当地时间的领域,因此,即使他们的本地机器可能是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')
将使用给定的时区。
当然,您不应该首先这样做。应使用正确的时区。