如何创建代表当月最后一刻的日期时间对象?
答案 0 :(得分:17)
使用一个简单的技巧:将日期设置为 next 月的第一个,然后根据需要减去一秒/小时/天/。
答案 1 :(得分:1)
import datetime
def eom(dt):
sometime_next_month= dt.replace(day=1) + datetime.timedelta(days=31)
start_of_next_month= sometime_next_month.replace(day=1,hour=0,minute=0,second=0)
return start_of_next_month - datetime.timedelta(seconds=1)
>>> eom(datetime.datetime(1972, 2, 1, 23, 50, 50))
datetime.datetime(1972, 2, 29, 23, 59, 59)
>>> eom(datetime.datetime(1980, 12, 31))
datetime.datetime(1980, 12, 31, 23, 59, 59)
答案 2 :(得分:0)
selected_date = date(some_year, some_month, some_day)
if selected_date.month == 12: # December
last_day_selected_month = date(selected_date.year, selected_date.month, 31)
else:
last_day_selected_month = date(selected_date.year, selected_date.month + 1, 1) - timedelta(days=1)
其中' timedelta(天= 1)'可能与下个月和上个月的最后一刻有所不同。