我正在尝试将时区信息作为字符串以'%H:%M:%S%z'
格式输出。为此,我正在执行以下操作:
import pytz
import datetime
tz = pytz.timezone('Africa/Cairo')
time = datetime.datetime.strptime('14:24:41', '%H:%M:%S').time()
time = time.replace(tzinfo=tz)
print(time.strftime('%H:%M:%S%z'))
即使替换了tzinfo,我得到的结果也只是'14:24:41'
。我在这里做什么错了?
编辑
这个问题不是重复的问题,因为另一个问题没有解释为什么不使用strftime()
方法打印时区。
答案 0 :(得分:1)
从datetime
包中,%z
是
以±HHMM [SS [.ffffff]]形式的UTC偏移量(如果对象是幼稚对象,则为空字符串)。
和
对于朴素的对象,%z和%Z格式代码将替换为空字符串。 对于有意识的物体:
%z
utcoffset()转换为形式为±HHMM [SS [.ffffff]]的字符串,其中HH是2位数字的字符串,给出了UTC偏移小时数,MM是2位数字的字符串,给出了数字的UTC偏移分钟数,SS是2位数的字符串,给出了UTC偏移秒数,而ffffff是6位数的字符串,给出了UTC偏移秒数。
使用示例代码,time.utcoffset()
返回空。
编辑并修复
您可能想使用.localize()
方法,但是您需要将字符串转换为datetime.datetime
而不是datetime.time
对象。从某种意义上说,这是有道理的:东京的星期三0100,柏林的是星期二 1700。
import pytz
import datetime
tz = pytz.timezone('Africa/Cairo')
dt = datetime.datetime.strptime('14:24:41', '%H:%M:%S')
time = tz.localize(dt)
print(time.strftime('%H:%M:%S%z'))