Python:timezone.localize()无法正常工作
问题内容:
我遇到一些问题,timezone.localize()
无法正常工作。我的目标是掌握今天的日期并将其从CST转换为EST。然后最后格式化日期时间,然后将其吐出。我可以正确格式化日期,但datetime不会从CST更改为EST。此外,当我格式化日期时,看不到时区的文本表示。
下面,我列出了我创建的用于测试的简单程序:
#! /usr/bin/python
#Test script
import threading
import datetime
import pexpect
import pxssh
import threading
from pytz import timezone
import pytz
est = timezone('US/Eastern')
curtime = est.localize(datetime.datetime.now().strftime("%a %b %d %H:%M:%S %Z %Y"))
#test time change
#curtime = datetime.datetime.now().strftime("%a %b %d %H:%M:%S %Z %Y")
class ThreadClass(threading.Thread):
def run(self):
#now = (datetime.datetime.now() + datetime.timedelta(0, 3600))
now = (datetime.datetime.now())
print "%s says Hello World at time: %s" % (self.getName(), curtime)
for i in range(3):
t = ThreadClass()
t.start()
问题答案:
.localize()
需要幼稚DateTime对象并对其进行解释 ,就好像 它是在该时区。它并 没有 时间移动到另一个时区。天真的日期时间对象
没有 时区信息,因此无法进行移动。
您想改为now()
在 本地 时区解释,然后.astimezone()
用来解释另一个时区的日期时间:
est = timezone('US/Eastern')
cst = timezone('US/Central')
curtime = cst.localize(datetime.datetime.now())
est_curtime = curtime.astimezone(est).strftime("%a %b %d %H:%M:%S %Z %Y"))
def run(self):
print "%s says Hello World at time: %s" % (self.getName(), est_curtime)