ホームページ  >  記事  >  バックエンド開発  >  Python で短縮タイムゾーン名を含む日付/時刻文字列を解析するにはどうすればよいですか?

Python で短縮タイムゾーン名を含む日付/時刻文字列を解析するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 08:58:30464ブラウズ

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

Python で短縮タイムゾーン名を使用した日付/時刻文字列を解析する

日付と時刻のデータを扱うときの一般的なタスクの 1 つは、次のことを表す文字列を解析することです。タイムスタンプ。これらのタイムスタンプには短縮されたタイムゾーン名が含まれることが多く、解析が困難になることがあります。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。