首页 > 解决方案 > 如何在 Python 中使用 strftime 打印我的时区小时而不是时区信息?

问题描述

我正在尝试使用我的本地时区设置打印日期/小时。

我已经成功地更改了日期对象的时区,但是当我打印它时,小时没有改变。我能得到的最多的是日期/小时的 TZ 信息?

from datetime import datetime
from datetime import timedelta
from pytz import timezone
import pytz

localtz = timezone('America/Sao_Paulo')

my_date = datetime(2019, 8, 14, 17, 55)
print(my_date)
print(my_date.strftime('%d/%m/%Y %H:%M:%S'))

my_tz_date = localtz.localize( my_date )
print(my_tz_date)
print(my_tz_date.strftime('%d/%m/%Y %H:%M:%S'))

-- produces --

2019-08-14 17:55:00
14/08/2019 17:55:00
2019-08-14 17:55:00-03:00
14/08/2019 17:55:00

我想要的是上面的代码产生“14/08/2019 12:55:00”,就像它在大多数其他编程语言上一样。我如何在 Python 中实现这一点?

标签: python

解决方案


这是一种方法(我假设您的意思是您希望最终结果是14/08/2019 21:55:00):

from datetime import datetime
from pytz import timezone

localtz = timezone('America/Sao_Paulo')
my_date = datetime.strptime("14/08/2019 17:55", "%d/%m/%Y %H:%M")

print(my_date)
print(my_date.astimezone(timezone('America/Sao_Paulo')).strftime("%d/%m/%Y %H:%M"))
print(my_date.astimezone(timezone('America/Sao_Paulo')).strftime("%d/%m/%Y %H:%M %Z"))

输出:

2019-08-14 17:55:00                                                                                                                                                                
14/08/2019 21:55                                                                                                                                                                   
14/08/2019 21:55 -03

推荐阅读