微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将日期从一个时区转换为另一个时区

如何解决如何将日期从一个时区转换为另一个时区

我的日期是用户浏览器时区中给定日期的开始,但是我需要使用date-fns将其转换为另一个时区中的开始日期。

我有个约会:

const date = new Date("2020-10-13"); // Tue Oct 13 2020 00:00:00 GMT-0400 (Eastern Daylight Time)

我需要将其转换为"America/Chicago"时区中的一天的开始。

const timeZone = "America/Chicago";
// Need to convert a date object
// Tue Oct 13 2020 00:00:00 GMT-0400 (Eastern Daylight Time)
// to
// Tue Oct 13 2020 00:00:00 GMT-0500 (Central Daylight Time)
// and all I'm given is the timeZone value.

解决方法

要获得对date-fns的时区支持,您将需要date-fns-tz附加模块。

然后您可以执行以下操作:

import { zonedTimeToUtc } from 'date-fns-tz';

const dt = zonedTimeToUtc('2020-10-13','America/Chicago');

结果将是一个Date对象,该对象代表给定时区的午夜。

请记住,Date对象本身总是 基于UTC。因此,您将无法获得位于不同时区的Date对象。

此外,您应该如图所示将字符串传递到zonedTimeToUtc函数中。您应该将其传递给Date对象。如评论中所述,ECMAScript规范指出,应将仅日期的字符串值解析为 UTC 。但是,仍有一些实现未正确遵循规范。因此,应避免使用Date对象构造函数来解析字符串。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。