2024-05-19 22:26:26 发布
网友
例如:
date 1 : 1 january 2000 date 2 : 17 november 2006
我想知道2000年,2001年,…2006年,日期1和日期2之间有多少天 因此,我需要返回这样的内容(不管它是否在列表中或其他内容中): 2000年:365年,2001年:365年,…,2006年:320年
我在网上找过类似的东西,但这只是计算两个日期之间的天数/月数/年数的方法
>>> start_date = datetime.datetime(2006, 7, 3) >>> end_date = datetime.datetime(2012, 12, 21) >>> years = range(start_date.year, end_date.year + 1) >>> start, end = start_date, end_date + datetime.timedelta(1) >>> for year in years: ... year_start = datetime.datetime(year, 1, 1, 0, 0) ... year_end = datetime.datetime(year + 1, 1, 1, 0, 0) ... print(year, min(end, year_end) - max(start, year_start)) ... 2006 182 days, 0:00:00 2007 365 days, 0:00:00 2008 366 days, 0:00:00 2009 365 days, 0:00:00 2010 365 days, 0:00:00 2011 365 days, 0:00:00 2012 356 days, 0:00:00
更新:您可能应该在结束日期中添加一个datetime.timedelta(1),否则您将在结束时休息一天。固定的。但这取决于您是要包含它还是排除它。
datetime.timedelta(1)
from datetime import date DATE_END = date(2006, 11, 17) def get_days(date_start): return (DATE_END - date_start).days starting_dates = [ date(2000, 1, 1), date(2001, 1, 1), date(2002, 1, 1), ] print map(get_days, starting_dates)
嗯,试试这样的:
import datetime, calendar date1 = datetime.date(year1, month1, day1) # month and day are 1-base date2 = datetime.date(year2, month2, day2) days_in_first_year = (datetime.date(year1,12,31)-date1).days days_in_last_year = (date2 - datetime.date(year2, 1, 1)).days if year1 != year2: n_days_list = [days_in_first_year] for year in range(year1+1, year2): n_days_list.append(365 + (1*calendar.isleap(year))) n_days_list.append(days_in_last_year) else: n_days_list = [days_in_first_year + days_in_last_year]
没有测试过这个,可能是一个接一个的错误;请确保它符合您的期望。
编辑:更正range()调用的边界,正确处理year1==year2
更新:您可能应该在结束日期中添加一个
datetime.timedelta(1)
,否则您将在结束时休息一天。固定的。但这取决于您是要包含它还是排除它。嗯,试试这样的:
没有测试过这个,可能是一个接一个的错误;请确保它符合您的期望。
编辑:更正range()调用的边界,正确处理year1==year2
相关问题 更多 >
编程相关推荐