Python:timezone.localize()不起作用

Wor*_*Bee 12 python timezone datetime

我有一些问题timezone.localize()正常工作.我的目标是抓住今天的日期并将其从CST转换为EST.然后在吐出之前最后格式化日期时间.我能够正确格式化日期,但日期时间不会从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()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 17

.localize()获取一个天真的日期时间对象并将其解释为就好像它在该时区中一样.它并没有时间移动到另一个时区.天真的日期时间对象没有时区信息,无法使该移动成为可能.

您想要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)
Run Code Online (Sandbox Code Playgroud)


unu*_*tbu 10

用于cst.localize将天真日期时间转换为时区感知日期时间.

然后使用astimezone将时区感知日期时间转换为另一个时区.

import pytz
import datetime

est = pytz.timezone('US/Eastern')
cst = pytz.timezone('US/Central')
curtime = cst.localize(datetime.datetime.now())
curtime = curtime.astimezone(est)
Run Code Online (Sandbox Code Playgroud)