从更大的TimeSpan中减去TimeSpan不同年份

Dra*_*lut 4 c# asp.net algorithm math

我使用的语言是C#.

我有下面的dillema.

DateTime A,DateTime B.如果A <B,那么我必须计算该时间跨度内每年的天数,并乘以与该年相对应的系数.我的问题是它可以跨越多年.

例如:

Ned of Time in TimeSpan for 2009*coef for 2009 + Nr of Time in TimeSpan for 2010*coef for 2010 + etc

Jon*_*eet 6

TimeSpan基本上,你不能用简单的方法做到这一点.它什么都不知道跨度何时覆盖 - 它只是一些滴答,真的.

听起来有点像你需要考虑的两种情况:

  • A和B在同一年.这很简单 - 只需从另一个中减去一个,然后从中获取天数
  • A和B在不同的年份.现在有两三种情况:
    • A年后A的天数.您可以通过在下一年构建1月1日,然后减去A来解决这个问题
    • 每年的天数完全在A和B之间(如果A在2008年,B在2011年,那将是2009年和2010年)
    • B年的天数.您可以通过构建前一年的12月31日,然后减去B.(或者可能是B年份的1月1日,取决于您是否要计算B开启的日期.)

您可以使用它DateTime.IsLeapYear来确定任何特定年份是否有365或366天.(我假设你只使用公历,顺便说一句.如果没有,所有这些都会改变!)