首页  >  文章  >  后端开发  >  如何在 Python 中解析带有缩写时区名称的日期/时间字符串?

如何在 Python 中解析带有缩写时区名称的日期/时间字符串?

Linda Hamilton
Linda Hamilton原创
2024-10-24 08:58:30356浏览

How to Parse Date/Time Strings with Abbreviated Timezone Names in Python?

在 Python 中解析带有缩写时区名称的日期/时间字符串

处理日期和时间数据时的一个常见任务是解析表示的字符串时间戳。这些时间戳通常会包含缩写的时区名称,这会给解析它们带来挑战。

在 Python 中,dateutil 库提供了用于解析日期/时间字符串的 parse() 函数。但是,默认情况下,parse() 无法识别缩写的时区名称。

解决方案

要处理缩写的时区名称,您可以将时区缩写字典传递给parse() 的 tzinfos 参数。该字典应将时区缩写映射到相应的 GMT 偏移量(以秒为单位)。

以下是创建时区缩写字典的方法:

<code class="python">tz_str = '''-12 Y
-11 X NUT SST
-10 W CKT HAST HST TAHT TKT
-9 V AKST GAMT GIT HADT HNY
-8 U AKDT CIST HAY HNP PST PT
-7 T HAP HNR MST PDT
-6 S CST EAST GALT HAR HNC MDT
-5 R CDT COT EASST ECT EST ET HAC HNE PET
-4 Q AST BOT CLT COST EDT FKT GYT HAE HNA PYT
-3 P ADT ART BRT CLST FKST GFT HAA PMST PYST SRT UYT WGT
-2 O BRST FNT PMDT UYST WGST
-1 N AZOT CVT EGT
0 Z EGST GMT UTC WET WT
1 A CET DFT WAT WEDT WEST
2 B CAT CEDT CEST EET SAST WAST
3 C EAT EEDT EEST IDT MSK
4 D AMT AZT GET GST KUYT MSD MUT RET SAMT SCT
5 E AMST AQTT AZST HMT MAWT MVT PKT TFT TJT TMT UZT YEKT
6 F ALMT BIOT BTT IOT KGT NOVT OMST YEKST
7 G CXT DAVT HOVT ICT KRAT NOVST OMSST THA WIB
8 H ACT AWST BDT BNT CAST HKT IRKT KRAST MYT PHT SGT ULAT WITA WST
9 I AWDT IRKST JST KST PWT TLT WDT WIT YAKT
10 K AEST ChST PGT VLAT YAKST YAPT
11 L AEDT LHDT MAGT NCT PONT SBT VLAST VUT
12 M ANAST ANAT FJT GILT MAGST MHT NZST PETST PETT TVT WFT
13 FJST NZDT
11.5 NFT
10.5 ACDT LHST
9.5 ACST
6.5 CCT MMT
5.75 NPT
5.5 SLT
4.5 AFT IRDT
3.5 IRST
-2.5 HAT NDT
-3.5 HNT NST NT
-4.5 HLV VET
-9.5 MART MIT'''

tzd = {}
for tz_descr in map(str.split, tz_str.split('\n')):
    tz_offset = int(float(tz_descr[0]) * 3600)
    for tz_code in tz_descr[1:]:
        tzd[tz_code] = tz_offset</code>

使用时区缩写字典,您可以解析您的日期/time string:

<code class="python">import dateutil.parser as dp

s = 'Sat, 11/01/09 8:00PM EST'
dt = dp.parse(s, tzinfos=tzd)

print(dt)
# Output: 2009-11-01 20:00:00-05:00</code>

注意

需要注意的是,时区命名没有明确定义,因此在解析缩写时区时可能会出现一些冲突。建议在解释解析的时间戳时仔细考虑数据的上下文和位置。

以上是如何在 Python 中解析带有缩写时区名称的日期/时间字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn