关于C#:如何在固定日期之后为每个经过的月份增加一个整数?


How to increment an integer for each passing month after a fixed date?

本问题已经有最佳答案,请猛点这里访问。

需要跟踪一场比赛的当前赛季(作为整数),每1个月递增一次。

如何在运行时计算自固定日期以来一个月内第一次出现的次数?

例:第一季开始的固定日期是01/04/2015。用户使用09/09/15上的应用程序。此时,应用程序需要知道,当前季节现在是季节6


如果我正确理解这个问题

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;