服务器python中的确切时间

时间:2014-04-22 17:56:05

标签: python datetime python-3.x

我有一个脚本读取数据库并在特定时间内向用户发送短信,我的服务器在伦敦,我的国家危地马拉是(-6小时),我使用:

local_time = datetime.datetime.utcnow() + datetime.timedelta(hours=-6)

我害怕日光可能会改变,我的短信发送错误

有没有办法控制这个?

2 个答案:

答案 0 :(得分:1)

您可以使用pytz等库来检查当地时间

>>> from pytz import timezone
>>> tz= timezone('America/Guatemala')
>>> from datetime import datetime
>>> tz.fromutc( datetime.utcnow() )
datetime.datetime(2014, 4, 22, 12, 4, 37, 2229, tzinfo=<DstTzInfo 'America/Guatemala' CST-1 day, 18:00:00 STD>)

库的准确性与基础时区数据库的准确性一样好,因此如果它不适合您的目的,请考虑为此做出贡献。

答案 1 :(得分:1)

获取给定时区的当前时间:

from datetime import datetime
import pytz # $ pip install pytz

now = datetime.now(pytz.timezone('America/Guatemala'))

示例:

>>> print(now.strftime('%F %T %Z%z'))
2014-04-23 01:04:46 CST-0600

使用tz数据库在* nix上,您可以更改本地时区(仅限stdlib的解决方案):

import os
import time
from datetime import datetime, timezone

os.environ['TZ'] = ':America/Guatemala'
time.tzset()

# to get local time
print(datetime.now(timezone.utc).astimezone().strftime('%F %T %Z%z'))
# -> 2014-04-23 01:12:38 CST-0600