python 格式化带时区的字符串日期

from dateutil.parser import parse
import pytz

def get_tzinfos():
    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
    return tzd

times = [ "Jun 15, 2020 11:59 AM EDT",
 "May 18, 2020 11:59 PM EDT",
 "May 25, 2020 11:59 PM EDT",
 "Jun 30, 2020 11:59 PM EDT",
 "Jun 1, 2020 11:59 PM EDT",
 "May 25, 2020 11:59 PM EDT",
 "Jun 1, 2020 11:59 PM PDT",
 "May 20, 2020 4:59 AM EDT",
 "Jun 30, 2020 11:59 PM PDT",
 "Jun 29, 2020 11:59 PM EDT",
 "Oct 15, 2020 11:59 PM EDT",
 "May 29, 2020 11:59 PM EDT",
 "Aug 14, 2020 5:00 PM CDT",
 "Jun 14, 2020 11:59 PM EDT",
 "May 31, 2020 5:00 PM EDT",
 "Jun 12, 2020 11:59 PM EDT",
 "May 31, 2020 11:59 PM EDT",
 "Jul 16, 2020 11:59 PM EDT",
 "May 31, 2020 11:59 PM CDT",
 "Jun 30, 2020 11:59 PM EDT",
 "May 31, 2020 11:59 PM EDT",
 "Jun 12, 2020 11:59 PM EDT",
 "May 28, 2020 11:59 PM EDT",
 "Jun 11, 2020 11:59 PM EDT",
 "Jul 6, 2020 11:59 PM CDT",
 "Jul 16, 2020 11:59 PM EDT",
 "Jun 15, 2020 2:00 AM CDT",
 "Aug 14, 2020 11:59 PM EDT",
 "Jun 5, 2020 11:59 PM PDT",
 "Jun 2, 2020 11:59 PM EDT",
 "Jun 23, 2020 11:59 PM EDT",
 "Jun 3, 2020 11:59 PM PDT",
 "Jun 22, 2020 11:59 PM CDT",
 "Jun 10, 2020 11:59 PM CDT",
 "May 20, 2020 11:59 PM PDT",
 "May 31, 2020 11:59 PM EDT",
 "Jun 13, 2020 11:59 PM EDT",
 "Aug 1, 2020 11:59 PM EDT",
 "Jun 2, 2020 12:00 AM EDT",
 "May 20, 2020 12:00 PM EDT",
 "Jun 19, 2020 8:59 AM PDT",
 "Jun 9, 2020 11:59 PM PDT",
 "May 21, 2020 11:59 PM EDT",
 "Jun 8, 2020 11:59 PM PDT",
 "May 21, 2020 11:59 PM MST",
 "Jul 31, 2020 11:59 PM EDT",
 "May 25, 2020 11:59 PM EDT",
 "Jun 19, 2020 11:59 PM EDT",
 "May 29, 2020 11:59 PM EDT",
 "May 31, 2020 11:59 PM EDT",
 "May 31, 2020 11:59 PM PDT",
 "Jun 19, 2020 12:00 AM EDT",
 "May 31, 2020 11:59 PM EDT",
 "May 22, 2020 11:59 PM CDT",
 "May 25, 2020 11:59 PM EDT",
 "Jul 14, 2020 11:59 PM EDT",
 "May 29, 2020 9:59 PM CDT",
 "May 22, 2020 11:59 PM EDT",
 "Jun 18, 2020 11:59 PM EDT",
 "Jul 19, 2020 4:59 PM EDT",
 "May 31, 2020 11:59 PM EDT",
 "Jun 7, 2020 11:59 PM EDT",
 "May 22, 2020 11:00 PM CDT",
 "May 22, 2020 11:59 PM PDT",
 "Jun 18, 2020 11:59 PM EDT",
 "May 31, 2020 11:59 PM EDT",
 "May 27, 2020 11:59 PM EDT",
 "May 30, 2020 11:59 PM EDT",
 "Jun 23, 2020 11:59 PM EDT",
 "May 24, 2020 11:59 PM EDT",
 "Aug 27, 2020 11:59 PM PDT",
 "May 31, 2020 11:59 PM EDT",
 "Jun 12, 2020 11:59 PM EDT",
 "May 25, 2020 11:59 PM CDT",
 "Jun 22, 2020 11:59 PM CDT",
 "Jun 20, 2020 11:59 PM EDT",
 "Jun 30, 2020 11:59 PM EDT",
 "Aug 21, 2020 11:59 PM EDT",
 "May 30, 2020 11:59 PM EDT",
 "Jun 30, 2020 12:00 AM EDT",
 "May 29, 2020 11:59 PM EDT",
 "May 30, 2020 11:59 PM EDT",
 "Aug 29, 2020 11:59 PM EDT",
 "May 25, 2020 11:59 PM CDT",
 "May 29, 2020 5:00 PM EDT",
 "Jul 2, 2020 11:59 PM EDT",
 "Jun 2, 2020 12:00 PM EDT",
 "May 29, 2020 12:00 PM EDT",
 "May 30, 2020 11:59 PM EDT",
 "Jun 5, 2020 11:59 PM EDT",
 "May 27, 2020 12:00 AM EDT",
 "Jun 3, 2020 11:59 PM EDT",
 "Aug 23, 2020 11:59 PM EDT",
 "May 29, 2020 11:59 PM EDT",
 "Jun 30, 2020 11:59 PM CDT",
 "May 31, 2020 11:59 PM EDT",
 "Jun 1, 2020 11:59 PM CDT",
 "May 25, 2020 11:59 PM EDT",
 "Jun 30, 2020 11:59 PM EDT",
 "May 29, 2020 11:59 AM EDT",
 "Jul 3, 2020 11:59 PM EDT",
 "May 25, 2020 11:59 PM EDT",
 "Jun 19, 2020 11:59 PM EDT",
 "Jun 30, 2020 11:59 PM EDT",
 "Jun 4, 2020 11:59 PM EDT",
 "Jul 30, 2020 11:59 PM EDT"]

tzinfos = get_tzinfos()
for t in times:
    # dt = parse(t,fuzzy=True).strftime('%Y-%m-%dT%H:%M:%S %Z')
    # dt = parse(t,fuzzy=True,tzinfos=tzinfos).strftime('%Y-%m-%dT%H:%M:%S %z') #%z ore %Z
    dt = parse(t,fuzzy=True,tzinfos=tzinfos)
    dt_iso = dt.isoformat()
    dt_utc_iso = dt.astimezone(pytz.utc).isoformat()
    dt_utc = dt.astimezone(pytz.utc).strftime('%Y-%m-%dT%H:%M:%S')
    print('\t'.join([t, dt_iso, dt_utc_iso, dt_utc ]))

你可能感兴趣的:(python 格式化带时区的字符串日期)