在 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中文网其他相关文章!