获取当前日期 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'
例如,以下代码片段打印日期。星期一(或)星期二等。 但是在我的本地机器上,它的打印是根据 印度标准时间 时区,但在我的服务器上,它的打印是根据 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'