通过提供国家名称和细分将UTC转换为本地时间

2024-04-18 07:48:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个cvs文件,包含UTC时区的日期时间,格式如下:2014-04-19 03:39:02.000。我用过解析器.parse读取日期时间。 我有国家名称和地区。我想把这个日期时间数据转换成本地时区根据国家和地区。在

csv文件内容(UTC):美国洛杉矶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

Tags: 文件数据名称解析器datetimeparse格式
2条回答

要从给定国家和地区的tz数据库中查找时区,可以尝试使用地理编码器,例如^{}

#!/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生效(自2014年3月9日至11月2日)。在

这是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>)

你只需要把你的“细分”映射到已知的时区。或者地点。在

^{pr2}$

是你的参考。在

或者可能是http://www.geonames.org/export/web-services.html

相关问题 更多 >