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

2024-10-06 18:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

now=datetime.now()

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

now=datetime.utcnow()

数据库中存储的时间仍然是UTC时间,我不明白如何查询今天发生的所有事务。 目前我使用的过滤器为>=今天和<=明天因此,当时间戳为UTC时间时,下午6:00之后的所有事务都存储到以下日期


Tags: 文件对象答案dbdatetimeheroku烧瓶网站
1条回答
网友
1楼 · 发布于 2024-10-06 18:29:25

试着用这些东西来忍受它:

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()

相关问题 更多 >