Javascript 如何使用moment.js将datetime转换为另一个时区datetime,然后再转换为utc?
如何使用moment.js将datetime转换为另一个时区datetime,然后再转换为utc? 这必须在不使用时区库的情况下完成,因此像tz和setTimezone这样的函数不可用。日期时间由用户输入 因此,夏威夷时间2019年5月24日20:35预计为utc时间2019年5月25日上午6:35。 我的本地计算机是Pacific 我试过这个:Javascript 如何使用moment.js将datetime转换为另一个时区datetime,然后再转换为utc?,javascript,momentjs,Javascript,Momentjs,如何使用moment.js将datetime转换为另一个时区datetime,然后再转换为utc? 这必须在不使用时区库的情况下完成,因此像tz和setTimezone这样的函数不可用。日期时间由用户输入 因此,夏威夷时间2019年5月24日20:35预计为utc时间2019年5月25日上午6:35。 我的本地计算机是Pacific 我试过这个: moment.utc(moment('5/24/2019 20:35','M/D/YYYY h:mm').utcOffset(-10).format(
moment.utc(moment('5/24/2019 20:35','M/D/YYYY h:mm').utcOffset(-10).format("MM/DD/YYYY HH:mm:ss")).format('MM/DD/YYYY HH:mm:ss');
但这是不正确的。为什么在转换为UTC之前需要转换到另一个时区 只需在纯JS中创建新日期(“2019年5月24日20:35-10”).toutString() 在最新的chrome浏览器上,它为我提供了正确的输出
“2019年5月25日周六06:35:00 GMT”
如果您需要ISO格式,请执行
新建日期(datestring).toISOString()/“2019-05-25T06:35:00.000Z”
为什么在转换为UTC之前需要转换为其他时区
只需在纯JS中创建新日期(“2019年5月24日20:35-10”).toutString()
在最新的chrome浏览器上,它为我提供了正确的输出“2019年5月25日周六06:35:00 GMT”
如果需要ISO格式,请执行
newdate(datestring).toISOString()/“2019-05-25T06:35:00.000Z”
如果时间是“20:35”,则解析标记应该是“H:mm”(或者可能是HH:mm),而不是“H:mm”。通常,您只需添加或减去时区中所需的差值,但是,这也要求您手动应用夏令时调整。使用时区感知库是一个更好的解决方案,这里有一些。考虑HH:MM和它的变化不是问题。很好。我非常了解我提到的时区库,所以我不能使用它,原因我现在无法解释,因为它在批准、测试等方面需要很多繁文缛节。只要承认我不能用它就行了。我现在需要一个解决方案。如果时间是“20:35”,那么解析标记应该是“H:mm”(或者可能是HH:mm),而不是“H:mm”。通常您只需添加或减去时区中所需的差异,但这也需要您手动应用夏令时调整。使用时区感知库是一个更好的解决方案,这里有一些。考虑HH:MM和它的变化不是问题。很好。我非常了解我提到的时区库,所以我不能使用它,原因我现在无法解释,因为它在批准、测试等方面需要很多繁文缛节。只要承认我不能用它就行了。我现在需要一个解决方案,“只需执行…”并期望在某些主机中出现无效日期或意外结果。使用内置解析器解析非标准字符串肯定会导致难以发现的bug。请参阅“Just do…”并在某些主机中预期无效日期或意外结果。使用内置解析器解析非标准字符串肯定会导致难以发现的bug。看见