Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Menghuraikan Rentetan Tarikh/Masa dengan Nama Zon Waktu Singkat dalam Python?

Bagaimana Menghuraikan Rentetan Tarikh/Masa dengan Nama Zon Waktu Singkat dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-24 08:58:30461semak imbas

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

Menghuraikan Rentetan Tarikh/Masa dengan Nama Zon Waktu Disingkat dalam Python

Satu tugas biasa apabila bekerja dengan data tarikh dan masa ialah menghuraikan rentetan yang mewakili cap masa. Cap masa ini selalunya boleh termasuk nama zon waktu yang disingkatkan, yang boleh menjadikan menghuraikannya sebagai satu cabaran.

Dalam Python, pustaka dateutil menyediakan fungsi parse() untuk menghuraikan rentetan tarikh/masa. Walau bagaimanapun, secara lalai, parse() tidak mengecam nama zon waktu yang disingkatkan.

Penyelesaian

Untuk mengendalikan nama zon waktu yang disingkatkan, anda boleh menghantar kamus singkatan zon waktu kepada tzinfos parameter parse(). Kamus ini harus memetakan singkatan zon waktu kepada offset GMT yang sepadan dalam beberapa saat.

Begini cara untuk mencipta kamus singkatan zon waktu:

<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>

Dengan kamus singkatan zon waktu, anda kemudiannya boleh menghuraikan tarikh anda /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>

Nota

Adalah penting untuk ambil perhatian bahawa penamaan zon waktu tidak ditakrifkan dengan jelas, jadi beberapa konflik mungkin timbul apabila menghuraikan zon waktu yang disingkatkan. Adalah disyorkan untuk mempertimbangkan konteks dan lokasi data anda dengan teliti semasa mentafsir cap masa yang dihuraikan.

Atas ialah kandungan terperinci Bagaimana Menghuraikan Rentetan Tarikh/Masa dengan Nama Zon Waktu Singkat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn