需要在Python中将UTC(AWS EC2)转换为PST
我需要把UTC时间(在ec2实例上)转换成太平洋标准时间(PST)。我正在尝试这么做。
from datetime import datetime
from pytz import timezone
import pytz
date_format='%m/%d/%Y %H:%M:%S %Z'
date = datetime.now()
print 'Current date & time is:', date.strftime(date_format)
my_timezone=timezone('US/Pacific')
date = my_timezone.localize(date)
date = date.astimezone(my_timezone)
print 'Local date & time is :', date.strftime(date_format)
但是输出结果是:
Current date & time is: 01/10/2012 20:01:14
Local date & time is : 01/10/2012 20:01:14 PST
有没有什么原因让我没有得到正确的PST时间呢?
5 个回答
7
用一行代码来完成这个任务:
>>> import pytz
>>> pytz.utc.localize(datetime.utcnow()).astimezone(pytz.timezone('US/Pacific'))
datetime.datetime(2016, 5, 16, 10, 58, 18, 413399, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)
7
通过调用 localize
,你是在告诉系统你的时间是在哪个时区。举个例子,你说你的日期是在太平洋标准时间(PST),然后你调用 astimezone
来转换成PST,这样得到的时间是一样的,这其实是正常的。你可能需要下面的代码:
utc_dt = pytz.utc.localize(datetime.utcnow())
pst_tz = timezone('US/Pacific')
pst_dt = pst_tz.normalize(utc_dt.astimezone(pst_tz))
pst_dt.strftime(fmt)
抱歉,我无法检查这段代码是否能运行,因为我在工作站上没有这个库。
52
from datetime import datetime
from pytz import timezone
import pytz
date_format='%m/%d/%Y %H:%M:%S %Z'
date = datetime.now(tz=pytz.utc)
print 'Current date & time is:', date.strftime(date_format)
date = date.astimezone(timezone('US/Pacific'))
print 'Local date & time is :', date.strftime(date_format)
对我来说似乎有效 :) - 时区确实让人困惑,慢慢制定一个我想做的计划通常能帮到我。