Maison  >  Article  >  développement back-end  >  Comment analyser des chaînes de date/heure avec des noms de fuseau horaire abrégés en Python ?

Comment analyser des chaînes de date/heure avec des noms de fuseau horaire abrégés en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-24 08:58:30356parcourir

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

Analyse des chaînes de date/heure avec des noms de fuseau horaire abrégés en Python

Une tâche courante lorsque vous travaillez avec des données de date et d'heure consiste à analyser des chaînes qui représentent horodatages. Ces horodatages peuvent souvent inclure des noms de fuseau horaire abrégés, ce qui peut rendre leur analyse difficile.

En Python, la bibliothèque dateutil fournit la fonction parse() pour analyser les chaînes de date/heure. Cependant, par défaut, parse() ne reconnaît pas les noms de fuseau horaire abrégés.

Solution

Pour gérer les noms de fuseau horaire abrégés, vous pouvez transmettre un dictionnaire d'abréviations de fuseau horaire au Paramètre tzinfos de parse(). Ce dictionnaire doit mapper les abréviations de fuseau horaire avec leurs décalages GMT correspondants en secondes.

Voici comment créer le dictionnaire d'abréviations de fuseau horaire :

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

Avec le dictionnaire d'abréviations de fuseau horaire, vous pouvez ensuite analyser votre date /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>

Remarque

Il est important de noter que la dénomination des fuseaux horaires n'est pas clairement définie, donc certains conflits peuvent survenir lors de l'analyse des fuseaux horaires abrégés. Il est recommandé d'examiner attentivement le contexte et l'emplacement de vos données lors de l'interprétation des horodatages analysés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn