在 Python 中设置时区

Posted

技术标签:

【中文标题】在 Python 中设置时区【英文标题】:Setting timezone in Python 【发布时间】:2010-11-21 01:13:42 【问题描述】:

是否可以使用 Python 像在 php 中这样设置时区:

date_default_timezone_set("Europe/London");
$Year = date('y');
$Month = date('m');
$Day = date('d');
$Hour = date('H');
$Minute = date('i');

由于我使用的是共享网络托管,因此我无法真正安装任何其他模块等。

有什么想法吗?

【问题讨论】:

to convert time between timezones, you could use pytz module 例如,tz = pytz.timezone('Europe/London'); london_time = tz.normalize(aware_dt.astimezone(tz))。获取本地时间作为感知 datetime 对象:current_local_time = datetime.now(tzlocal.get_localzone()) 【参考方案1】:
>>> import os, time
>>> time.strftime('%X %x %Z')
'12:45:20 08/19/09 CDT'
>>> os.environ['TZ'] = 'Europe/London'
>>> time.tzset()
>>> time.strftime('%X %x %Z')
'18:45:39 08/19/09 BST'

要获取您列出的具体值:

>>> year = time.strftime('%Y')
>>> month = time.strftime('%m')
>>> day = time.strftime('%d')
>>> hour = time.strftime('%H')
>>> minute = time.strftime('%M')

有关指令的完整列表,请参阅 here。请记住,strftime() 函数将始终返回一个字符串,而不是整数或其他类型。

【讨论】:

"tzset" 是 Unix 专用函数。啊!【参考方案2】:

注意运行

import os
os.system("tzutil /s \"Central Standard Time\"");

将改变 Windows 系统时间,而不仅仅是本地 python 环境时间(definitley 与以下不同:

>>> os.environ['TZ'] = 'Europe/London'
>>> time.tzset()

仅在当前环境时间设置(仅在 Unix 中)

【讨论】:

即使你运行 os.system("tzutil /s \"Central Standard Time\"");,它也不会改变本地 python 环境。【参考方案3】:

对于您可以使用的窗口:

在 python 中运行 Windows 命令提示符命令。

import os
os.system('tzutil /s "Central Standard Time"')

在 windows 命令提示符下尝试:

这给出了当前时区:

tzutil /g

这给出了一个时区列表:

tzutil /l

这将设置时区:

tzutil /s "中美洲标准时间"

进一步参考: http://woshub.com/how-to-set-timezone-from-command-prompt-in-windows/

【讨论】:

特定于 windows,不过 是的,但是 Richard Simões 用 tzset 完成了回答,这仅在 Unix 系统上可用。【参考方案4】:

你也可以使用 pytz..

import datetime
import pytz
def utcnow():
    return datetime.datetime.now(tz=pytz.utc)
utcnow()
   datetime.datetime(2020, 8, 15, 14, 45, 19, 182703, tzinfo=<UTC>)
utcnow().isoformat()

'

2020-08-15T14:45:21.982600+00:00'

【讨论】:

【参考方案5】:

这不是答案,但是...

要单独获取datetime 组件,最好使用datetime.timetuple:

time = datetime.now()
time.timetuple()
#-> time.struct_time(
#    tm_year=2014, tm_mon=9, tm_mday=7, 
#    tm_hour=2, tm_min=38, tm_sec=5, 
#    tm_wday=6, tm_yday=250, tm_isdst=-1
#)

现在很容易获得零件:

ts = time.timetuple()
ts.tm_year
ts.tm_mon
ts.tm_mday
ts.tm_hour
ts.tm_min
ts.tm_sec

【讨论】:

以上是关于在 Python 中设置时区的主要内容,如果未能解决你的问题,请参考以下文章

如何在流明 5.2 中设置时区?

如何在 node.js 中设置默认时区?

基于时区在 C# 中设置日期时间,例如 +08:00 [重复]

在yii2中设置动态时区

如何在 Crashlytics 中设置时区?

如何在 Selenium Chromedriver 中设置时区?