在python中设置时区

Setting timezone in Python

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

1
2
3
4
5
6
date_default_timezone_set("Europe/London");
$Year = date('y');
$Month = date('m');
$Day = date('d');
$Hour = date('H');
$Minute = date('i');

我不能真正安装任何其他模块等,因为我正在使用共享的网络托管。

有什么想法吗?


1
2
3
4
5
6
7
>>> 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'

要获得列出的特定值:

1
2
3
4
5
>>> year = time.strftime('%Y')
>>> month = time.strftime('%m')
>>> day = time.strftime('%d')
>>> hour = time.strftime('%H')
>>> minute = time.strftime('%M')

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


对于Windows,您可以使用:

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

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

在Windows命令提示符中,尝试:

这将给出当前时区:

tzutil /g

这给出了时区列表:

tzutil /l

这将设置时区:

tzutil /s"Central America Standard Time"

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


这不是答案,但是…

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

1
2
3
4
5
6
7
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
#)

现在很容易得到零件:

1
2
3
4
5
6
7
ts = time.timetuple()
ts.tm_year
ts.tm_mon
ts.tm_mday
ts.tm_hour
ts.tm_min
ts.tm_sec