在一个senario中,我需要找出两个日期之间的差异,例如开始日期是2012年1月1日,结束日期是2013年10月10日。我需要将输出设为1.9年。
int tDays=(ToDate.Subtract(FromDAte).Days+1);
int years = tDays / 365;
int months = (tDays % 365) / 31;
但是,对于Le年,这种计算是错误的。
最佳答案
我的Noda Time库正是为这种事情而构建的:
LocalDate start = new LocalDate(...);
LocalDate end = new LocalDate(...);
Period period = Period.Between(start, end);
Console.WriteLine("{0} years, {1} months, {2} days",
period.Years, period.Months, period.Days);
请注意,这还将处理以下事实:月份的长度并不总是相同的-例如,2013年2月1日至3月1日(28天)== 1个月,而3月1日至
3月29日(也是28天)== 0个月28天。
这将使您获得数月,数年和数天的时间-根据您的示例,我不确定从何处获得“ 1.9”,除非您使用的是“ years.months”,我强烈建议您不要使用“ years.months”意思是“非常接近2年”。