Python的日期时间和月份
使用一个简单的技巧:将日期设置为下一个月的第一个日期,然后按照您的需要减去一秒/小时/天/秒。
+1:始终有效 - 永远不需要知道当月的天数。或者一年,就此而言。 – 2009-11-02 16:03:50
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)
你为什么歧视十二月? – SilentGhost 2009-11-02 20:55:08
你说得对。我的印象是datetime.datetime正在做*正确的事*,但显然我错了。我会在SO中找到我在另一个答案中编写的代码。 – tzot 2009-11-02 22:21:51
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)”可能是下个月和前一个月的最后时刻的差异。
你在找什么精度? – SilentGhost 2009-11-02 16:01:02
1秒就足够了 – Konstantin 2009-11-02 16:02:05