Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python时区解析_Python_Date_Date Parsing - Fatal编程技术网

Python时区解析

Python时区解析,python,date,date-parsing,Python,Date,Date Parsing,我在用python解析日期时有点问题 这是我必须解析的日期: Sun Sep 15, 2013 12:10pm EDT 这就是我用来解析它的代码: datetime.strptime( date, "%a %b %d, %Y %I:%M%p %Z") 一切正常,但时区解析总是返回ValueError异常。我也试过pytz,但没有成功 那么如何使用python解析此类日期呢?使用: tzd生成代码来自 更新 注意时区缩写列表并不像马特·约翰逊评论的那样准确。请参阅。使用: tzd生成代码来自

我在用python解析日期时有点问题

这是我必须解析的日期:

Sun Sep 15, 2013 12:10pm EDT
这就是我用来解析它的代码:

datetime.strptime( date, "%a %b %d, %Y %I:%M%p %Z")
一切正常,但时区解析总是返回ValueError异常。我也试过pytz,但没有成功

那么如何使用python解析此类日期呢?

使用:

tzd
生成代码来自

更新

注意时区缩写列表并不像马特·约翰逊评论的那样准确。请参阅。

使用:

tzd
生成代码来自

更新


注意时区缩写列表并不像马特·约翰逊评论的那样准确。请参阅。

您不能。反正也不可靠。时区缩写词模棱两可,相互矛盾。没有标准

例如,“CST”有5种截然不同的含义

  • (UTC-06:00)中部标准时间(美国)
  • (UTC-05:00)古巴标准时间
  • (UTC+08:00)中国标准时间
  • (UTC+09:30)中央标准时间(澳大利亚)
  • (UTC+10:30)中部夏季时间(澳大利亚)

有关其他示例,请参见。

您不能。反正也不可靠。时区缩写词模棱两可,相互矛盾。没有标准

例如,“CST”有5种截然不同的含义

  • (UTC-06:00)中部标准时间(美国)
  • (UTC-05:00)古巴标准时间
  • (UTC+08:00)中国标准时间
  • (UTC+09:30)中央标准时间(澳大利亚)
  • (UTC+10:30)中部夏季时间(澳大利亚)

有关其他示例,请参见。

这不是一个好的建议。谁能说这个时区缩写列表是准确的?时区缩写词模棱两可,相互矛盾。例如,“CST”有5种截然不同的含义。有关详细信息,请参阅。@MattJohnson,谢谢您的评论。根据您的评论,我添加了一个注释。如果您的应用程序仅限于一个具有不同时区缩写的地区(例如,北美),这仍然是一个可接受的解决方案:这不是一个好的建议。谁能说这个时区缩写列表是准确的?时区缩写词模棱两可,相互矛盾。例如,“CST”有5种截然不同的含义。有关详细信息,请参阅。@MattJohnson,谢谢您的评论。根据您的评论,我添加了一个注释。如果您的应用程序仅限于一个具有不同时区缩写集的地区(例如,北美),这仍然是一个可接受的解决方案:
import dateutil.parser
import pytz

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

date = 'Sun Sep 15, 2013 12:10pm EDT'
dateutil.parser.parse(date, tzinfos=tzd) # => datetime.datetime(2013, 9, 15, 12, 10, tzinfo=tzoffset(u'EDT', -14400))