我使用flask实现了一个REST Web服务。它存储并提供事件信息。
在存储信息时,我执行以下步骤:
最后获取utc时间戳并将其存储在db。
中def __get_timestamp(_datetime):
"""Returns the timestamp from datetime
"""
return time.mktime(_datetime.timetuple())
def __strptime(formatted_dt, tzinfo):
"""Returns the utc timestamp after conversion from entered timezone to utc
"""
tzinfo_dt = tzinfo.localize(datetime.datetime(formatted_dt['year'], formatted_dt['month'], formatted_dt['day'], formatted_dt['hour'], formatted_dt['minute']), is_dst=True)
utc = get_tzinfo()
utc_tz = utc.normalize(tzinfo_dt.astimezone(utc))
return __get_timestamp(utc_tz)
def get_tzinfo(user_timezone="UTC"):
"""Return pytz timezone
"""
return pytz.timezone(user_timezone)
检索信息时
以所需格式返回
def get_tzinfo(user_timezone="UTC"):
"""Return pytz timezone
"""
return pytz.timezone(user_timezone)
def __strftime(ts, tzinfo, format='%Y-%m-%d %I:%M %p'):
"""Return the formatted datetime after converting utc timestamp to required timezone
"""
utc = get_tzinfo()
utc_dt = utc.localize(datetime.datetime.fromtimestamp(ts), is_dst=True)
tzinfo_dt = tzinfo.normalize(utc_dt.astimezone(tzinfo))
formatted_dt = tzinfo_dt.strftime(format)
return formatted_dt
序列就像这样
输入日期时间= 2014-03-21 14:00
TimeZone =“Asia / Kathmandu” - > (GMT + 05:45)加德满都
结果时间戳= 1395407700
最终格式化输出=“2014-03-21 03:00 PM”
问题似乎是夏令时,因为相同的代码在本地测试时会给出正确的结果。
目前,网络服务正在Openshift上运行 其服务器有“EDT”时区, 而我的本地设置有“NPT”。
如何解决这个问题?