美文网首页
python 格式化带时区的字符串日期

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

作者: charliecao | 来源:发表于2020-05-27 22:05 被阅读0次
    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 格式化带时区的字符串日期

          本文链接:https://www.haomeiwen.com/subject/hmxnahtx.html