时区转换在OpenShift中显示一个小时的偏移量

时间:2014-03-19 14:44:58

标签: python datetime python-2.7 openshift

我使用flask实现了一个REST Web服务。它存储并提供事件信息。

在存储信息时,我执行以下步骤:

  • 取日期,时间和时区。
  • 本地化为提供的时区
  • 然后将其转换为utc timezone
  • 最后获取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)
    

检索信息时

  • 检索utc时间戳
  • 将其本地化为utc
  • 将其转换为所需的时区
  • 以所需格式返回

    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”。

如何解决这个问题?

0 个答案:

没有答案