我有一个脚本读取数据库并在特定时间发送短信给用户,我的服务器在伦敦,我的国家危地马拉在(-6小时),我使用:
local_time = datetime.datetime.utcnow() + datetime.timedelta(hours=-6)
我怕日光会变,我的短信发错了
有什么办法能控制这一切吗?
发布于 2014-04-22 17:57:19
您可以使用库(例如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>)
库的准确性与底层时区数据库的准确性一样好,因此,如果它不适合您的目的,请考虑对其作出贡献。
发布于 2014-04-23 07:07:31
要获取给定时区中的当前时间,请执行以下操作:
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
在*nix上使用tz数据库,您可以更改本地时区(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
https://stackoverflow.com/questions/23226881
复制相似问题