我有几种日期数据来源,包括日期和时间。从api或页面抓取返回的几种不同格式(都是字符串)。在我看来,使用GMT作为基础并在前端使用Date.parse将UI转换为本地时间是可行的。但是,我遇到了一个数据源,该数据源以以下格式返回日期:
“美国东部时间2019年2月15日凌晨2点”
我现在正在重新考虑我的约会架构以及GMT是否是最佳选择。所有来源日期/时间均为北美。
我试图了解是否有任何日期库或方法可以处理“美国东部时间凌晨2点”,或者我是否必须自己进行转换(也要回滚日期)。目前,将EST转换为GMT只是将其转换回前端的EST对我来说没有意义。
有什么建议吗?
答案 0 :(得分:2)
第一部分02/15/2019 2 AM
可以用Moment.js,Luxon或Date-fns之类的库进行解析。
但是,不能在全球范围内解析时区缩写。典范示例是缩写CST
,它可以解释为美国中央标准时间,澳大利亚中央标准时间,中国标准时间或古巴标准时间。还存在许多其他歧义。
因此,只有当您已经知道将要遇到的所有缩写以及要如何解释它们时,才可以将缩写映射到时区偏移量。例如,如果您只关心美国大陆的时间,则可以映射以下内容:
EDT = -4
EST = -5
CDT = -5
CST = -6
MDT = -6
MST = -7
PDT = -7
PST = -8
但是,如果要添加阿拉斯加和夏威夷,则可能需要添加:
AKDT = -8
AKST = -9
HADT = -9
HAST = -10
HST = -10
请注意,HST
和HAST
都如何用于夏威夷?两者都是在那里常用的。即使您决定要HST
,对于阿拉斯加的阿留申群岛,您仍然需要HAST
和HADT
-与阿拉斯加其他地区的时区不同。
那其他美国领土呢,您的数据包括其中吗?
您可以看到事情如何变得相当复杂。通常,不应解析时区缩写,而应仅用于显示给人类。如果要生成需要稍后解释的数据,则该数据应包含时区偏移。