我想做的事情如下
鉴于两个日期,例如1998年3月2日和2011年9月25日。如何将间隔分成
2011年9月1日至2011年9月25日(30天)
但是,如果不存在任何间隔,我们不会强迫包括它,即结果不会总是天/月/年/月/日例如。
鉴于开始日期='1998-02-01'和结束日期='2011-03-31', 预期结果为(月/年/月)
1998-02-01 ==> 1998-12-31 1999-01-01 ==> 2010-12-31 2011-01-01 ==> 2011-03-31
鉴于开始日期='1998-02-01'和结束日期='1998-03-31', 期望结果为(2个月)
1998-02-01 ==> 2011-03-31
鉴于开始日期='1998-01-05'和结束日期='1998-02-03',
预期结果为(天/天)
1998-01-05 ==> 2011-01-31
1998-02-01 ==> 2011-02-03
如果我的描述没有意义,请查看以下内容。我试图在.net
中完成相同的工作Algorithm to find optimal day/month/year intervals to in an arbitrary timeframe?
答案 0 :(得分:1)
你可以这样做:
DateTime startDate = new DateTime(1998, 3, 2);
DateTime endDate = new DateTime(2011, 9, 25);
DateTime firstMonth = new DateTime(startDate.Year, startDate.Month, 1).AddMonths(1);
DateTime firstYear = new DateTime(startDate.Year + 1, 1, 1);
DateTime lastYear = new DateTime(endDate.Year, 1, 1);
DateTime lastMonth = new DateTime(endDate.Year, endDate.Month, 1);
Console.WriteLine("{0:yyyy-MM-dd} - {1:yyyy-MM-dd}", startDate, firstMonth.AddDays(-1));
Console.WriteLine("{0:yyyy-MM-dd} - {1:yyyy-MM-dd}", firstMonth, firstYear.AddDays(-1));
Console.WriteLine("{0:yyyy-MM-dd} - {1:yyyy-MM-dd}", firstYear, lastYear.AddDays(-1));
Console.WriteLine("{0:yyyy-MM-dd} - {1:yyyy-MM-dd}", lastYear, lastMonth.AddDays(-1));
Console.WriteLine("{0:yyyy-MM-dd} - {1:yyyy-MM-dd}", lastMonth, endDate);
输出:
1998-03-02 - 1998-03-31
1998-04-01 - 1998-12-31
1999-01-01 - 2010-12-31
2011-01-01 - 2011-08-31
2011-09-01 - 2011-09-25