将已获取的日期转换为新时区javascript

r8xiu3jd  于 2022-10-30  发布在  Java
关注(0)|答案(2)|浏览(204)

我能不能

"Thu Oct 27 2022 02:00:00 GMT-0600 (Mountain Daylight Time)"

到这个?

"Thu Oct 27 2022 02:00:00 GMT-0400 (New_York or whatever its actually called)"

我正在使用一个名为react-datepicker的组件
我的日期选择器是返回这样的日期,我在科罗拉多州。

"Thu Oct 27 2022 02:00:00 GMT-0600 (Mountain Daylight Time)"

当我把它转换成UTC时,我得到

"2022-10-27T08:00:00Z"

我的组件总是返回我当地时区的时间,也就是丹佛。我希望能够选择一个时间,让它返回我的第一个日期,然后以某种方式将其转换为纽约时间的第二个日期。

"Thu Oct 27 2022 02:00:00 GMT-0400 (New_York or whatever its actually called)"

这样,当我转换为utc时,我可以得到下面的输出

"2022-10-27T06:00:00Z"

有人能帮我吗?

goqiplq2

goqiplq21#

使用偏移量示例化一个新的Date对象。有关详细信息,请参阅How to initialize a JavaScript Date to a particular time zone

const date1 = new Date('August 19, 1975 23:15:30 GMT+07:00');
const date2 = new Date('August 19, 1975 23:15:30 GMT-02:00');
z9smfwbn

z9smfwbn2#

下面是我如何使用moment-timezone实现我想要的

//date coming in like this Sat Oct 29 2022 02:00:00 GMT-0600 (Mountain Daylight Time)
const applyOffset = date.setTime(date.getTime() - date.getTimezoneOffset() * 60_000);
  const actualTime = new Date(applyOffset).toISOString().replace("Z", "")
  const toTz = momentt.tz(actualTime, timezone).format()
  const getUTCTime = momentt.utc(toTz).format()

请注意,传递给www.example.com的时区变量momentt.tz(actualTime,timezone)。format()可以是任何命名的时区,如“America/New_约克”或“America/芝加哥”
当我使用console.log(getUTCTime)时,我会得到2022-10- 29 T06:00:00 Z如果我将时区设为“America/New_约克”

相关问题