【发布时间】:2022-11-17 18:54:27
【问题描述】:
目前我正在这样做:
import { parseISO, format } from 'date-fns';
import { formatInTimeZone } from 'date-fns-tz'
// e.g. chosenConnection['departure'] === "2022-08-26T03:41:25.280415+02:00"
departureParsedIso = parseISO(chosenConnection['departure'])
tz = chosenConnection['departure'].slice(-6)
formatInTimeZone(departureParsedIso, tz, 'dd.MM.yyyy')
这些出发日期总是发生在某个国家和时区,所以我当然需要在正确的时区中格式化日期,而不是在浏览器或服务器的当前时区中,这就是为什么我使用 date-fns' formatInTimeZone .
但是,我发现没有其他方法可以从 chosenConnection['departure'] 中提取时区信息,这真的很奇怪而且很老套。我发现 departureParsedIso 没有以某种方式保存该信息也很奇怪。
有没有更好、更健壮、更少反模式、更优雅的方法来做到这一点?也许与另一个日期时间库?
我也尝试用format(departureParsedIso, 'xxx') 提取偏移量,但这显然再次返回客户端或服务器的时区,而不是 ISO 字符串中编码的时区。但为什么?那么parseISO有什么用呢?
【问题讨论】:
-
不幸的是,没有可靠的方法可以从偏移量推断出时区,因为单个偏移量通常与多个时区对齐。
标签: javascript date-fns