我有一个cvs文件,其中包括UTC时区的日期时间,格式为: 2014-04-19 03:39:02.000。我用parser.parse来阅读约会时间.我有国家名称和分部。我想根据国家和细分将这些日期-时间数据转换为本地时区.
csv文件内容(UTC):us 2014-04-19 03:39:02.000
本地日期-时间(UTC-6):2014-04-18 21:39:02.000
所以我有一个叫做元素的对象。我想计算本地日期时间。
element.country='us'
element.subdivision='la'
element.date_time_utc=parser.parse(split_line[13].strip())
element.date_time_local发布于 2015-04-07 20:00:37
若要从给定国家和细分的tz数据库中查找时区,可以尝试使用地理编码器(如geopy )。
#!/usr/bin/env python
from datetime import datetime
import pytz # $ pip install pytz
from geopy import geocoders # $ pip install geopy
# find timezone given country and subdivision
g = geocoders.GoogleV3()
place, (lat, lng) = g.geocode('us/la')
timezone = g.timezone((lat, lng))
# parse rfc3339-like format
utc_dt = datetime.strptime('2014-04-19 03:39:02.000', '%Y-%m-%d %H:%M:%S.%f')
# convert utc to the given timezone
dt = timezone.fromutc(utc_dt)
# -> datetime.datetime(2014, 4, 18, 22, 39, 2,
# tzinfo=<DstTzInfo 'America/Chicago' CDT-1 day, 19:00:00 DST>)place被确定为Louisiana, USA (如果'la'代表美国的状态是正确的),因此时间是2014-04-18T22:39:02-05:00 (而不是21:39) -- DST生效(从3月9日到2014年11月2日)。
发布于 2015-04-07 18:10:43
这是ISO 8601格式。
In: dt = dateutil.parser.parse('2014-04-19 03:39:02.0000')
In: dt
Out: datetime.datetime(2014, 4, 19, 3, 39, 2)
In: pytz.timezone('US/Pacific').fromutc(dt)
Out: datetime.datetime(2014, 4, 18, 20, 39, 2, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)唯一需要的是将您的“细分”映射到已知的时区。或者地点。
pytz.all_timezones是你的推荐信。
也可能是http://www.geonames.org/export/web-services.html
https://stackoverflow.com/questions/29496330
复制相似问题