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

打字稿日期时区设置

如何解决打字稿日期时区设置

我有一个React应用程序,该应用程序获取包含时间戳的ISO8601格式的列表数据。日期将来自美国/芝加哥时间ex。 “ 2020-09-01T06:05:00-05:00” ...我相信是美国/芝加哥,因为-05:00代表中央夏令时。我想让用户选择他们想要查看日期的时区(美国/芝加哥,美国/丹佛,...等)。我想使用date-fns和date-fns-tz软件包。

让我烦恼的是,当我在控制台上打印日期时,我会看到相对于本地时区的日期。由于我将用户设置在不同的时区,因此我不希望它成为功能,因此当我打印日期并在DOM中使用它们时,他们应该参考他们选择的时区。

type TZ = 'US/Chicago' | 'US/Denver';
const [timezone,setTimezone] = React.useState<TZ>('US/Chicago');

const onUpload = (data: string[]) => {
     
     // convert data ( list of iso8601 dates ) to tz
     const dates = data.map(d => parseISO(d));
     // something with date-fns-tz
    
     setDates(dates)
}

解决方法

这可能会达到目的:

const clientsTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone
const [timezone,setTimezone] = React.useState(clientsTimeZone);

或者如果存在SSR问题,则可以将其设置为useEffect

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