Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储python datetime时间戳,以便以后可以查询该日期的所有事件_Python_Python 3.x_Flask_Flask Sqlalchemy - Fatal编程技术网

存储python datetime时间戳,以便以后可以查询该日期的所有事件

存储python datetime时间戳,以便以后可以查询该日期的所有事件,python,python-3.x,flask,flask-sqlalchemy,Python,Python 3.x,Flask,Flask Sqlalchemy,所以我已经阅读了每一份文件,所以我能找到的问题已经有两天了,但我还没有弄明白。我遇到的问题似乎很简单,但我根本无法很好地理解问题的答案 我在Heroku上建立了一个网站。它是装在烧瓶里的。 当有人进行购买时,my postgress db中的customer对象将使用不带时区表的时间戳进行时间戳。为此,我使用: now=datetime.now() 这设置了一个在本地机器上测试时可以使用的时间,但现在由于我的servertime在UTC时间关闭了7个小时而关闭。 我看到的问题是,如果我将时间戳

所以我已经阅读了每一份文件,所以我能找到的问题已经有两天了,但我还没有弄明白。我遇到的问题似乎很简单,但我根本无法很好地理解问题的答案

我在Heroku上建立了一个网站。它是装在烧瓶里的。 当有人进行购买时,my postgress db中的customer对象将使用不带时区表的时间戳进行时间戳。为此,我使用:

now=datetime.now()
这设置了一个在本地机器上测试时可以使用的时间,但现在由于我的servertime在UTC时间关闭了7个小时而关闭。 我看到的问题是,如果我将时间戳存储为:

now=datetime.utcnow()
数据库中存储的时间仍然是UTC时间,我不明白如何查询今天发生的所有事务。
目前,我使用的过滤器>=今天,并尝试使用以下过滤器:

from datetime import datetime

import pytz
import tzlocal


def get_stamp()->float:
    return datetime.timestamp(datetime.now())


def stamp_to_utc(stamp:float)->datetime:
    naive_local = datetime.fromtimestamp(stamp) 
    local_tz = pytz.timezone(tzlocal.get_localzone().zone)
    return local_tz.localize(naive_local).astimezone(pytz.utc)

def utc_to_tz(utc_dt, tz_name)->datetime:
    return utc_dt.astimezone(pytz.timezone(tz_name))

def main():
    stamp = get_stamp()  # store this in db
    stamp_dt_utc = stamp_to_utc(stamp)
    print(stamp_dt_utc)
    stamp_dt_arizona = utc_to_tz(stamp_dt_utc, "US/Arizona")
    print(stamp_dt_arizona)


if __name__ == "__main__":
    main()

我很抱歉,但我仍然不明白这些将如何解决我的问题?当我存储事件时,我需要将时间戳设置为亚利桑那时间,而不是服务器所在地的本地时间。在数据库中存储为float,从数据库读取时将其转换为UTC,在您已经是UTC之后转换为所需的tz,否则转换将不准确。编程中的时间戳通常是基于UTC的,您可能需要阅读有关此主题的更多信息。