Flask:使用时间戳保存对象

时间:2017-03-10 04:27:06

标签: flask flask-sqlalchemy

我正在使用flask-sqlalchemy做烧瓶应用程序。 我需要使用客户端提供的时间戳将对象保存到db。 例如:



2017-03-03T11:30:00+04:00




我需要用+4时区保存此时间戳。模型声明如下所示:



class Appointment(db.Model):

    __tablename__ = 'appointments'

    id = Column(db.Integer, primary_key=True)
    start_time = Column(db.DateTime(timezone=True), nullable=False)




所以这里我有start_time属性。我试着像这样保存我的约会对象:



new_appointment = Appointment()
# at this line I convert string time to python datetime
appointment_time = datetime.strptime(string_datetime[:len(string_datetime) - 3] +                                                 string_datetime[len(string_datetime) - 2:],
                                                 '%Y-%m-%dT%H:%M:%S%z')

new_appointment.start_time = appointment_time
db.session.add(new_appointment)
db.session.commit()




当我检查我的数据库时,我的对象与我的服务器时区一起保存(在本例中为+6)。我也尝试在没有时区的情况下保存(设置timezone = False),但是时间戳再次保存为+6,但没有时区指示。如何使用提供的timzone强制保存对象?

1 个答案:

答案 0 :(得分:0)

使用pyTZ模块

获取UTC时间并将其转换为所需的时区

from datetime import datetime
from pytz import *

eastern = timezone('US/Eastern')
loc_dt = eastern.localize(datetime(2017, 10, 3, 7, 27, 0))
print loc_dt

此外,您可以通过日期时区处理来解决这个有趣的article详细问题