使用 Python 解析特定时区的日期
Parse a date in a specific timezone with Python
如何获取这个日期字符串:
"2015-01-01"
并且,假设它处于特定时区(例如,"US-Mountain"),将其转换为 POSIX 时间戳?
像这样:
magic_parse_function("2015-01-01", pytz.timezone("US-Mountain")) -> 1420095600
我花了很多时间搜索文档和这个站点,玩弄 aware/unaware 日期时间对象,并且 希望 找到一个不太疯狂的解决方案.以下不起作用,最后两行输出是相同的,它们应该相隔 3600 秒:
import datetime
import time
import pytz
timestring = "2015-01-01"
pacific = pytz.timezone("US/Pacific")
mountain = pytz.timezone("US/Mountain")
(year, month, day) = timestring.split('-')
year = int(year)
month = int(month)
day = int(day)
unaware = datetime.datetime(year, month, day, 0, 0, 0, 0)
# aware_pacific = pacific.localize(unaware)
# aware_mountain = mountain.localize(unaware)
aware_mountain = unaware.replace(tzinfo=mountain)
aware_pacific = unaware.replace(tzinfo=pacific)
print time.mktime(aware_pacific.timetuple())
print time.mktime(aware_mountain.timetuple())
分为三个步骤:
将日期字符串转换为原始 datetime
对象:
from datetime import datetime
dt = datetime(*map(int ,'2015-01-01'.split('-')))
获取时区感知日期时间对象:
import pytz # $ pip install pytz
aware = pytz.timezone("US/Mountain").localize(dt, is_dst=None)
is_dst=None
为不明确或不存在的时间引发异常。这里是
获取POSIX时间戳:
timestamp = aware.timestamp()
.timestamp()
自 Python 3.3+ 起可用。见 multiple solutions for older Python versions.
如何获取这个日期字符串:
"2015-01-01"
并且,假设它处于特定时区(例如,"US-Mountain"),将其转换为 POSIX 时间戳?
像这样:
magic_parse_function("2015-01-01", pytz.timezone("US-Mountain")) -> 1420095600
我花了很多时间搜索文档和这个站点,玩弄 aware/unaware 日期时间对象,并且 希望 找到一个不太疯狂的解决方案.以下不起作用,最后两行输出是相同的,它们应该相隔 3600 秒:
import datetime
import time
import pytz
timestring = "2015-01-01"
pacific = pytz.timezone("US/Pacific")
mountain = pytz.timezone("US/Mountain")
(year, month, day) = timestring.split('-')
year = int(year)
month = int(month)
day = int(day)
unaware = datetime.datetime(year, month, day, 0, 0, 0, 0)
# aware_pacific = pacific.localize(unaware)
# aware_mountain = mountain.localize(unaware)
aware_mountain = unaware.replace(tzinfo=mountain)
aware_pacific = unaware.replace(tzinfo=pacific)
print time.mktime(aware_pacific.timetuple())
print time.mktime(aware_mountain.timetuple())
分为三个步骤:
将日期字符串转换为原始
datetime
对象:from datetime import datetime dt = datetime(*map(int ,'2015-01-01'.split('-')))
获取时区感知日期时间对象:
import pytz # $ pip install pytz aware = pytz.timezone("US/Mountain").localize(dt, is_dst=None)
is_dst=None
为不明确或不存在的时间引发异常。这里是获取POSIX时间戳:
timestamp = aware.timestamp()
.timestamp()
自 Python 3.3+ 起可用。见 multiple solutions for older Python versions.