在Python中设置时区

时间:2009-08-19 17:38:32

标签: python timezone

Python是否可以在PHP中设置时区:

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

我无法安装任何其他模块等,因为我正在使用共享虚拟主机。

有什么想法吗?

5 个答案:

答案 0 :(得分:77)

>>> 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()函数将始终返回一个字符串,而不是整数或其他类型。

答案 1 :(得分:4)

对于Windows,您可以使用:

在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/

答案 2 :(得分:1)

这不是答案,但是......

要单独获取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

答案 3 :(得分:1)

请注意,运行

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

会更改Windows系统时间,而不仅仅是本地python环境时间(definitley与以下内容不同:

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

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

答案 4 :(得分:1)

您也可以使用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'