使用Python datetime计算时间窗口

1 投票
3 回答
2704 浏览
提问于 2025-04-16 08:51

我想要查询我的数据库,找出某一天发布的所有记录(比如说今天,从00:00到23:59:59),给定的时间戳是像这样的:datetime.datetime(2010, 12, 21, 17, 59, 43, 85335)。

请问,计算开始和结束的datetime.datetime实例的最佳方法是什么呢?我希望最终能得到类似这样的结果:

>>> timestamp = datetime.datetime(2010, 12, 21, 17, 59, 43, 85335)
>>> # do something with timestamp to get start_date and end_date 
>>> start_date
datetime.datetime(2010, 12, 21, 0, 0, 0, 0)
>>> end_date
datetime.datetime(2010, 12, 21, 23, 59, 59, 0)

谢谢,HC

3 个回答

0

timedelta听起来正是你需要的东西。

http://docs.python.org/library/datetime.html#timedelta-objects

你可以这样写:从日期时间库里导入datetime和date。

date.today() - timedelta(days=7)

这段代码会给你今天往前推7天的日期。

0

如果只是计算某一天,那么你现在的做法就可以了。只需要把日期用上,然后把小时设置为0:00和23:59,分别代表这一天的开始和结束。

不过,如果你想要获取一个月的开始和结束时间,那就复杂多了,因为每个月的天数不一样。对于这种情况,你可以使用这个模块

http://niemeyer.net/python-dateutil

3

啊,找到了我想要的东西。每次处理日期和时间我都很头疼。

>>> timestamp = datetime.datetime.now()
>>> timestamp
datetime.datetime(2010, 12, 21, 18, 31, 37, 900795)
>>> timestamp.replace(hour=0, minute=0, second=0, microsecond=0)
datetime.datetime(2010, 12, 21, 0, 0)

撰写回答