Javascript Moment.js-世界上任何地方,使用相同的时区
我找到了一些其他的帖子,但是它们没有我想要的东西 以下是场景: 中国的用户(尽管可能在世界任何地方)在代表美国当地时间的字段中输入日期时间。因此,即使他们的本地机器在北京可能是2018年2月15日凌晨1:11,用户也会在日期时间字段中输入德克萨斯州奥斯汀2018年2月14日上午11:11的日期 这是我从输入字段中提取的字符串: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-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。只是当地时区不是他们自己的,而是别人的。谢谢!就是这样!