Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Moment.js-世界上任何地方,使用相同的时区_Javascript_Timezone_Momentjs - Fatal编程技术网

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

Javascript Moment.js-世界上任何地方,使用相同的时区,javascript,timezone,momentjs,Javascript,Timezone,Momentjs,我找到了一些其他的帖子,但是它们没有我想要的东西 以下是场景: 中国的用户(尽管可能在世界任何地方)在代表美国当地时间的字段中输入日期时间。因此,即使他们的本地机器在北京可能是2018年2月15日凌晨1:11,用户也会在日期时间字段中输入德克萨斯州奥斯汀2018年2月14日上午11:11的日期 这是我从输入字段中提取的字符串: '2018-02-14T11:11' 如何使用moment.js确保在将'2018-02-14T11:11'转换为UTC时,UTC字符串始终反映奥斯汀时间,而不是北京时间

我找到了一些其他的帖子,但是它们没有我想要的东西

以下是场景:

中国的用户(尽管可能在世界任何地方)在代表美国当地时间的字段中输入日期时间。因此,即使他们的本地机器在北京可能是2018年2月15日凌晨1:11,用户也会在日期时间字段中输入德克萨斯州奥斯汀2018年2月14日上午11:11的日期

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

如何使用moment.js确保在将
'2018-02-14T11:11'
转换为UTC时,UTC字符串始终反映奥斯汀时间,而不是北京时间?在一天结束时,我们不知道用户来自哪个时区,但我们总是知道输入的时区将在中央标准时间

下面出现的情况似乎是,当我使用这些转换为UTC时,日期仍然没有反映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()

至UTC:

time.utc('2018-02-14T11:11').tz(“美国/芝加哥”).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'或任何不匹配的字符

time.tz('2018-02-14Z','YYYY-MM-DD','America/Chicago')
将使用给定的时区


当然,首先你不应该这样做。应使用正确的时区。

UTC的整点是,无论您所在的时区如何,它都是世界时。在现实世界的应用程序中,您应该将UTC存储在数据库中,但使用诸如矩.js之类的库以您希望用户在其中看到的任何时区显示时区。@th3n3wguy-有时是这样,但不总是这样。在这种情况下,OP似乎正是这样做的。他们询问用户在本地时区的输入,并转换为UTC。只是当地时区不是他们自己的,而是别人的。谢谢!就是这样!