如何在Python中打印时间对象的时区?
我正在尝试以字符串形式打印时区信息,格式为如何在Python中打印时间对象的时区?,python,datetime,pytz,Python,Datetime,Pytz,我正在尝试以字符串形式打印时区信息,格式为'%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')) 我得到的结果
'%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'))
我得到的结果只是'14:24:41'
,即使在替换tzinfo之后也是如此。我做错了什么
编辑
这个问题不是重复的,因为另一个问题没有解释为什么不使用strftime()
方法打印时区。从软件包中,%z
是
UTC偏移量的形式为±HHMM[SS[.ffffffff]](如果对象是原始对象,则为空字符串)
及
对于原始对象,将用空字符串替换%z和%z格式代码。
对于感知对象:
%z
utcoffset()转换为±HHMM[SS[.ffffff]]形式的字符串,其中HH是表示UTC偏移小时数的2位字符串,MM是表示UTC偏移分钟数的2位字符串,SS是2位字符串,表示UTC偏移秒数,ffffff是6位字符串,表示UTC偏移微秒数
使用示例代码,time.utcoffset()
返回空
编辑,带有修复程序
您可能希望使用.localize()
方法,但要这样做,您需要将字符串转换为datetime.datetime
对象,而不是datetime.time
对象。这在某种程度上是有道理的:东京周三凌晨1点,柏林周二下午5点
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'))
这可能是有趣的重复。那么,如何为时间对象设置时区呢?因为,使用
time.replace(tzinfo=tz)
显然不起作用。我编辑了它,为您的示例添加了一个修复程序。如果您确实需要使用datetime.time
对象,则应在添加TZ偏移量后调用.time()。