如何将日期从一个时区转换为另一个时区
How to convert date from one timezone to another timezone
我有一个日期,它是用户浏览器时区中给定日期的开始,但我需要使用 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 add-on 模块。
那么您可以进行以下操作:
import { zonedTimeToUtc } from 'date-fns-tz';
const dt = zonedTimeToUtc('2020-10-13', 'America/Chicago');
结果将是一个 Date
对象,表示给定时区的午夜。
请记住,Date
对象本身 总是 UTC-based。因此,您无法获得“处于”不同时区的 Date
对象。
此外,您应该将一个字符串传递给 zonedTimeToUtc
函数,如图所示。您应该 不 将它传递给 Date
对象。如评论中所述,ECMAScript 规范规定 date-only 字符串值应解析为 为 UTC。但是,仍然有一些实现没有正确遵循规范。因此,您应该避免使用 Date
对象构造函数来解析字符串。
我有一个日期,它是用户浏览器时区中给定日期的开始,但我需要使用 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 add-on 模块。
那么您可以进行以下操作:
import { zonedTimeToUtc } from 'date-fns-tz';
const dt = zonedTimeToUtc('2020-10-13', 'America/Chicago');
结果将是一个 Date
对象,表示给定时区的午夜。
请记住,Date
对象本身 总是 UTC-based。因此,您无法获得“处于”不同时区的 Date
对象。
此外,您应该将一个字符串传递给 zonedTimeToUtc
函数,如图所示。您应该 不 将它传递给 Date
对象。如评论中所述,ECMAScript 规范规定 date-only 字符串值应解析为 为 UTC。但是,仍然有一些实现没有正确遵循规范。因此,您应该避免使用 Date
对象构造函数来解析字符串。