【问题标题】:Convert UTC timezone to IST python将UTC时区转换为IST python
【发布时间】:2020-07-22 21:29:56
【问题描述】:

以下代码行为我提供了生产服务器上的 UTC 时间。

timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')

请建议一种将以上 UTC 时区转换为 IST(印度标准时间) 时间的方法。

【问题讨论】:

  • 如果你想控制时区,你应该安装 tz 模块(你可以在 Python 标准库文档中看到链接(docs.python.org/3/library/datetime.html#tzinfo-objects 部分的末尾)。它不包含在Python(但很多讨论),因为 tz 数据库需要频繁更改,比 Python 版本更频繁)。
  • @GiacomoCatenazzi:tz 模块 是什么?在您链接的文档中,有一个指向 dateutil 和 IANA 数据库的链接。
  • @MrFuppes:您在回答中使用的模块dateutils.tz

标签: python-3.x datetime utc python-datetime


【解决方案1】:

datetime.now() 为您提供一个简单的 datetime 对象,该对象根据您运行脚本的机器的设置表示本地时间(在这种情况下,恰好是 UTC,因为它是一个服务器) .请参阅docs

要在特定时区获取“现在”,您可以适当地设置tz 属性。

Python >= 3.9:您在标准库中有 zoneinfo 来执行此操作:

from zoneinfo import ZoneInfo
dtobj = datetime.now(tz=ZoneInfo('Asia/Kolkata'))
print(dtobj)
>>> 2020-07-23 11:11:43.594442+05:30

Python 我建议使用dateutil 包来执行此操作(或通过backports.zoneinfo 使用zoneinfo)。

from datetime import datetime
from dateutil.tz import gettz
dtobj = datetime.now(tz=gettz('Asia/Kolkata'))
print(dtobj)
>>> 2020-07-23 11:08:54.032651+05:30

【讨论】:

  • 您能否建议一种在字符串末尾不使用 +5:30 并提供真实时间的方法?提前致谢
  • @GarvitJoshi 您的意思是打印/获取没有UTC偏移量的字符串?你可以例如dtobj.strftime("%d %b %y, %H:%M:%S"),这是你需要的吗?有关更多格式指令,请参阅docs
【解决方案2】:
from datetime import datetime    
import pytz    
tz_NY = pytz.timezone('Asia/Kolkata')   
datetime_NY = datetime.now(tz_NY)  
print("India time:", datetime_NY.strftime("%Y-%m-%d %H:%M:%S.%f"))       
>>India time: 2021-05-03 12:25:21.877976

【讨论】:

    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多