需要在Python中将UTC(AWS EC2)转换为PST

34 投票
5 回答
84335 浏览
提问于 2025-04-17 09:57

我需要把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)

对我来说似乎有效 :) - 时区确实让人困惑,慢慢制定一个我想做的计划通常能帮到我。

撰写回答