gpt4 book ai didi

javascript - moment-timezones.js,如何将特定时区的日期转换为 utc,而不考虑我的本地时区?

转载 作者:行者123 更新时间:2023-11-28 17:56:14 31 4
gpt4 key购买 nike

我的系统使用时区 UTC+03:00 ,

我试图获取字符串格式的日期,由纽约时区表示,并将其转换为 utc 格式的 Date 对象

const dateInNY = moment.tz(xlsxDate, "M/D/YYYY h:mm a",  "America/New_York")
.tz("Z").toDate();

无法正常工作

我该如何转换为 utc 时间?

<小时/>

------------编辑----------------

我让它工作,使用时区“非洲/阿克拉”,其中UTC偏移量为0,并且没有夏令时:

moment.tz(xlsxDate, "M/D/YYYY h:mm a",  "America/New_York").tz("Africa/Accra")

但这个解决方案是一个糟糕的解决方法,如果阿克拉政府决定更改时间法,将停止工作!

有没有办法将 momentjs-timezones 中的 utc 偏移量设置为 0?

最佳答案

正如 Álvaro González 提到的,该 Date 对象不包含时区信息。我执行以下操作:

new Date(moment.tz(date, currentTimezone).tz(newTimezone).format('YYYY/MM/DD HH:mm:ss')) 

其中 date 是日期对象或字符串(例如“2017-10-30 16:30:00.0000”)

因此,我将日期从 currentTimezone 更改为 newTimezone,之后将返回新的 Date 对象

  1. 我们将“2017-10-30 16:30:00.0000”从 UTC 更改为美国/多伦多 (UTC-4)

    new Date(moment.tz(date, 'UTC').tz('America/Toronto').format('YYYY/MM/DD HH:mm:ss')) 

    我得到了

    Mon Oct 30 2017 12:30:00 GMT+0400 

    GMT+0400 是我的时区,console.log() 只显示它与任何日期对象,它可能会误导您。请不要看这个时区。

  2. 我们将“2017-10-30 16:30:00.0000”从欧洲/萨马拉 (UTC+4) 更改为美洲/多伦多 (UTC-4)

    new Date(moment.tz('2017-10-30 16:30:00.0000', 'Europe/Samara').tz('America/Toronto').format('YYYY/MM/DD HH:mm:ss')) 

    首先,moment.tz 知道该日期没有时区信息并与欧洲/萨马拉 (UTC+4) 相关联时区。之后计算新旧之间的差异时区(在本例中为 -8 小时)

    并返回结果

    Mon Oct 30 2017 08:30:00 GMT+0400

并回答你的问题

如果xsltDate是不包含时区信息的日期对象或字符串

dateUTC = new Date(moment.tz(xlsxDate, "America/New_York").tz("UTC").format('YYYY/MM/DD HH:mm:ss'));

如果 xsltDate 包含时区信息(例如'2013-06-01T00:00:00-04:00'),则无需告诉 moment.tz xlsxDate 有哪个时区,只需提及一个新时区

dateUTC = new Date(moment.tz(xlsxDate, "UTC").format('YYYY/MM/DD HH:mm:ss'));

关于javascript - moment-timezones.js,如何将特定时区的日期转换为 utc,而不考虑我的本地时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44385815/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com