使用PYTZ添加和返回UTC时间

时间:2015-04-06 01:26:25

标签: python datetime sqlalchemy utc pytz

当我向order添加DB时,我想将时间包含在UTC

ts = time.time()
utc = pytz.utc
orderDateUTC = datetime.utcfromtimestamp(ts).replace(tzinfo=utc)

return add_order_to_db(tableID, userID, restaurantID, orderDateUTC, orderCost, orderStatus, orderItems)

当我将date添加到DB时,我将其添加为UTC,然后在将其返回给用户之前尝试将其转换回local time

add_order_to_db(...)

def add_order_to_db(tableID, userID, restaurantID, orderDateUTC, orderCost, orderStatus, orderItems):

    receivedOrder = ORDER(tableID, userID, restaurantID, orderDateUTC, orderCost, orderStatus)
    with contextlib.closing(DBSession()) as session:
        try:
           session.add(receivedOrder)
           session.commit()
        except exc.SQLAlchemyError, error:
            session.rollback()
            raise_database_error(error)
        else:
            au_tz = timezone('Australia/Sydney')
            au_dt = au_tz.normalize(orderDateUTC.astimezone(au_tz))
            receivedOrder.ORDERSDATE = au_dt
            order = Order(receivedOrder, 'true')
            return jsonify(data=order.serialize())

的serialize()

   def serialize(self):                   
            return {                    
                'orderDate' : self.ORDERSDATE                                                                                                                                 
                }

ORDERSDATE定义为:

ORDERSDATE = Column(DateTime, nullable=False)

问题是time没有正确转换回来。

returned outputDB中的数据是:orderDate: "Mon, 06 Apr 2015 01:13:00 GMT"

但我需要returned outputorderDate: "Mon, 06 Apr 2015 11:13:00 GMT"

我发现如果我返回return str(au_dt),我会得到正确的输出,但格式不同:2015-04-06 11:13:37.461000+10:00

1 个答案:

答案 0 :(得分:0)

  

但是我需要返回的输出为orderDate:" Mon,06 Apr 2015 11:13:00 GMT"

这是不正确的。如果以下情况属实,您就不需要它:

两个

  

返回的输出和数据库中的数据是:orderDate:" Mon,06 Apr 2015 01:13:00 GMT"

  

我发现如果我返回str(au_dt),我会得到正确的输出,但形式不同:2015-04-06 11:13:37.461000 + 10:00

相同的时间:

local time = utc time + utc offset
     11:13 =    01:13 + 10