How to increment an integer for each passing month after a fixed date?
本问题已经有最佳答案,请猛点这里访问。
需要跟踪一场比赛的当前赛季(作为整数),每1个月递增一次。
如何在运行时计算自固定日期以来一个月内第一次出现的次数?
例:第一季开始的固定日期是
如果我正确理解这个问题
1 2 3 4 | DateTime dt1 = new DateTime(2014, 4, 1); DateTime dt2 = DateTime.Now; // since you have taken the"1" start is 01/04/2015. int Diff = (dt2.Month - dt1.Month) + ((dt2.Year - dt1.Year) * 12) + 1; |
这相当于计算以月为单位的差额,因为当天不计算在内。因此,这里的答案也适用于您的特定问题:https://stackoverflow.com/a/1526004/2606322
1 | int months = (now.Month - start.Month) + 12 * (now.Year - start.Year); |
然而,两者之间存在着微妙的差异。如果你的开始日期是1号,你必须再加一个月,不管你是否想数一数。
1 | int months = (now.Month - start.Month) + 12 * (now.Year - start.Year) + (start.Day == 1 ? 1 : 0); |
或者,如果您想要一个基于1的计数,只需添加1,就像您在示例中可能做的那样。
1 | int months = (now.Month - start.Month) + 12 * (now.Year - start.Year) + 1; |