是否存在一个无限的日期时间?

47 投票
3 回答
17479 浏览
提问于 2025-04-17 21:58

对于浮点数,我们有一些特殊的对象,比如负无穷(-inf)和正无穷(+inf),这些对象在比较时总是会小于或大于其他数字。

我需要类似的东西来处理日期时间,不知道有没有这样的选项?在数据库中排序必须和django的查询集过滤器正常工作,理想情况下它应该和不同的数据库都能兼容(至少要能在mysql和sqlite上使用),而且不受时区影响。

目前我在使用空值(null)或None,但这让查询变得非常复杂,因为None同时充当了负无穷和正无穷的角色,我必须在查询中明确考虑所有这些情况。

3 个回答

4

如果有人在使用Pandas数据框中的日期:

>>> import pandas as pd
>>> pd.Timestamp.min
Timestamp('1677-09-21 00:12:43.145225')
>>> pd.Timestamp.max
Timestamp('2262-04-11 23:47:16.854775807')
29

其实没有其他的选择;你能用的最小和最大时间值就是 datetime.datetime.mindatetime.datetime.max

这些值是保证最小和最大时间的,但 datetime.datetime.min == datetime.datetime.min 这个表达式的结果是 True;也就是说,其他的时间值都比这个大。对于 datetime.datetime.max 的情况则正好相反。

另外,datetime.datedatetime.time 也有各自的最小和最大值。

48

试试这个:

>>> import datetime
>>> datetime.datetime.max
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)

你可以获取 min(最小值)和 max(最大值)用于 datetime(日期时间)、date(日期)和 time(时间)。

撰写回答