「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。
-
daterange
创建一个在
start
(含) 和end
(不含)之间的日期对象列表。-
使用
datetime.timedelta.days
获得start
和end
之间相隔的天数。 -
使用
int()
把结果强转成整数, 使用range()
迭代每一天。 -
使用列表推导和
datetime.timedelta()
创建一个datetime.date
对象列表。
-
from datetime import timedelta, date
def daterange(start, end):
return [start + timedelta(n) for n in range(int((end - start).days))]
daterange(date(2020, 10, 1), date(2020, 10, 5))
# [date(2020, 10, 1), date(2020, 10, 2), date(2020, 10, 3), date(2020, 10, 4)]
-
from_iso_date
将 ISO-8601 表示转换为日期。ISO-8601是日期和时间的表示方法。
- 使用
datetime.datetime.fromisoformat()
将给定的 ISO-8601 日期转换为 datetime.datetime 对象。
- 使用
from datetime import datetime
def from_iso_date(d):
return datetime.fromisoformat(d)
from_iso_date('2020-10-28T12:30:59.000000') # 2020-10-28 12:30:59
-
to_iso_date
将日期转换为其 ISO-8601 表示。
- 使用
datetime.datetime.isoformat()
将给定的datetime.datetime
对象转换为 ISO-8601 日期。
- 使用
from datetime import datetime
def to_iso_date(d):
return d.isoformat()
to_iso_date(datetime(2020, 10, 25)) # 2020-10-25T00:00:00
-
days_ago
计算从今天开始的n天前的日期。
-
使用
datetime.date.today()
来获取当前的日期。 -
使用
datetime.timedelta
从今天的日期中减去n天。
-
from datetime import timedelta, date
def days_ago(n):
return date.today() - timedelta(n)
days_ago(5) # date(2020, 10, 23)
-
days_from_now
计算从今天起 n 天的日期。
-
使用
datetime.date.today()
获取当前日期。 -
使用
datetime.timedelta
从今天的日期开始增加 n 天。
-
from datetime import timedelta, date
def days_from_now(n):
return date.today() + timedelta(n)
days_from_now(5) # date(2020, 11, 02)
-
months_diff
计算两个日期之间的月份差。
-
从
end
减去start
并使用datetime.timedelta.days
来获得日差。 -
除以
30
并使用math.ceil()
得到月差(四舍五入)。
-
from math import ceil
def months_diff(start, end):
return ceil((end - start).days / 30)
from datetime import date
months_diff(date(2020, 10, 28), date(2020, 11, 25)) # 1
-
add_days
计算从给定日期算起 n 天的日期。
-
使用
datetime.timedelta
和+
运算符计算d
后n
天的datetime.datetime
。 -
若省略第二个参数
d
,则使用datetime.today()
的默认值。
-
from datetime import datetime, timedelta
def add_days(n, d = datetime.today()):
return d + timedelta(n)
from datetime import date
add_days(5, date(2020, 10, 25)) # date(2020, 10, 30)
add_days(-5, date(2020, 10, 25)) # date(2020, 10, 20)
-
days_diff
计算两个日期之间的天差。
- 从
end
减去start
并使用datetime.timedelta.days
来获得日差。
- 从
def days_diff(start, end):
return (end - start).days
from datetime import date
days_diff(date(2020, 10, 25), date(2020, 10, 28)) # 3
-
is_weekday
检查给定日期是否为工作日。
-
使用
datetime.datetime.weekday()
以整数形式获取星期几。 -
检查星期几是否小于或等于
4
。 -
若省略第二个参数
d
,则使用datetime.today()
的默认值。
-
from datetime import datetime
def is_weekday(d = datetime.today()):
return d.weekday() <= 4
from datetime import date
is_weekday(date(2020, 10, 25)) # False
is_weekday(date(2020, 10, 28)) # True
-
is_weekend
检查给定日期是否是周末。
-
使用
datetime.datetime.weekday()
以整数形式获取星期几。 -
检查星期几是否大于
4
。 -
省略第二个参数
d
,以使用datetime.today()
的默认值。
-
from datetime import datetime
def is_weekend(d = datetime.today()):
return d.weekday() > 4
from datetime import date
is_weekend(date(2020, 10, 25)) # True
is_weekend(date(2020, 10, 28)) # False