获取当前日期 w.r.t 时区

Get Current Day w.r.t timezone

例如,以下代码片段打印日期。星期一(或)星期二等。 但是在我的本地机器上,它的打印是根据 印度标准时间 时区,但在我的服务器上,它的打印是根据 UTC。

import datetime
from datetime import date
current_day_name =  (date.today().strftime("%A")).lower()
print(current_day_name)

有人可以建议我如何根据特定时区调整此代码,例如 印度标准时间(或)UTC?

这里引用了 datetime 库参考:

Because the format depends on the current locale, care should be taken when making assumptions about the output value.

因此 datetime 取决于区域设置。 locale 参考描述了一个函数 setlocale:

Applications typically start with a call of:

import locale
locale.setlocale(locale.LC_ALL, '')

因此,首先确保您拥有所需的语言包(例如 sudo apt install language-pack-id),然后按照文档中的说明指定语言环境。

举个例子,在我的电脑上我 运行

>>>import locale
>>>locale.getdefaultlocale()
('en_US', 'UTF-8')
>>>datetime.date.today().strftime('%A')
'Saturday'
>>> locale.setlocale(locale.LC_ALL,'hr_HR.utf8')
'hr_HR.utf8'
>>> datetime.date.today().strftime('%A')
'subota'

看起来您可能还需要向 datetime 构造函数提供 tzinfo(请参阅 datetime 参考)。例如:

>>> datetime.datetime.now(datetime.timezone.utc).strftime('%c, %Z,%z')
'Sat 15 Feb 2020 01:07:16 PM , UTC,+0000'
>>> datetime.datetime.now(datetime.timezone(
    datetime.timedelta(hours=1),'CET')).strftime('%c, %Z,%z')
'Sat 15 Feb 2020 02:07:28 PM , CET,+0100'