Nas*_*nov 60
dateutil的parser.parse()接受作为关键字参数tzinfos的类型的字典{'EST': -5*3600}(即,匹配的区域名称为GMT以秒偏移量).所以假设我们有,我们可以这样做:
>>> import dateutil.parser as dp
>>> s = 'Sat, 11/01/09 8:00PM'
>>> for tz_code in ('PST','PDT','MST','MDT','CST','CDT','EST','EDT'):
>>> dt = s+' '+tz_code
>>> print dt, '=', dp.parse(dt, tzinfos=tzd)
Sat, 11/01/09 8:00PM PST = 2009-11-01 20:00:00-08:00
Sat, 11/01/09 8:00PM PDT = 2009-11-01 20:00:00-07:00
Sat, 11/01/09 8:00PM MST = 2009-11-01 20:00:00-07:00
Sat, 11/01/09 8:00PM MDT = 2009-11-01 20:00:00-06:00
Sat, 11/01/09 8:00PM CST = 2009-11-01 20:00:00-06:00
Sat, 11/01/09 8:00PM CDT = 2009-11-01 20:00:00-05:00
Sat, 11/01/09 8:00PM EST = 2009-11-01 20:00:00-05:00
Sat, 11/01/09 8:00PM EDT = 2009-11-01 20:00:00-04:00
Run Code Online (Sandbox Code Playgroud)
关于内容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
Run Code Online (Sandbox Code Playgroud)
PS.@Hank Gay时区命名没有明确定义.为了形成我的表格,我使用了http://www.timeanddate.com/library/abbreviations/timezones/和http://en.wikipedia.org/wiki/List_of_time_zone_abbreviations.我查看了每个冲突,并解决了流行的(更常用的)晦涩和流行名称之间的冲突.有一个 - IST - 不是那么明确(它可能意味着印度标准时间,伊朗标准时间,爱尔兰标准时间或以色列标准时间),所以我把它排除在表外 - 你可能需要选择添加什么根据您的位置.哦 - 我和他们荒谬的"看着我,我是第一个庆祝新年"GMT + 13和GMT + 14时区,遗漏了基里巴斯共和国.
Dra*_*uan 10
您可以尝试使用pytz模块:http://pytz.sourceforge.net/
pytz将Olson tz数据库带入Python.该库允许使用Python 2.3或更高版本进行准确的跨平台时区计算.它还解决了夏令时结束时模糊时间的问题,您可以在Python库参考(datetime.tzinfo)中阅读更多相关内容.
几乎所有的奥尔森时区都得到了支持.
dateutil中的parse()函数无法处理时区.我一直在使用的是%Z格式化程序和time.strptime()函数.我不知道它如何处理时区的模糊性,但它似乎说明了CDT和CST之间的区别,这就是我所需要的.
背景:我使用当地时间将备份图像存储在名称为时间戳的目录中,因为我家里没有GMT时钟.所以我使用time.strptime(d,r"%Y-%m-%dT%H:%M:%S_%Z")将目录名称解析回年龄分析的实际时间.
| 归档时间: |
|
| 查看次数: |
14837 次 |
| 最近记录: |