服务器python中的确切时间



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

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

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

有什么办法控制这种情况吗?

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

库的准确性与底层时区数据库的准确性一样好,所以如果它不适合您的目的,请考虑为其做出贡献。

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

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

相关内容

  • 没有找到相关文章

最新更新