How can I calculate the numbers of month between two dates in C#
我想知道如何计算两个日期之间的月份数。有没有任何方法可以用C来计算它?
1 2 3 4 5 6 7 8 9 10 11
| Eg1. Date1 ="2011/11/01"
Date2 ="2012/02/01"
Result. Numbers of Month =3
Eg2. Date1 ="2012/01/31"
Date2 ="2012/02/01"
Result. Numbers of Month =1
Eg3. Date1 ="2012/01/01"
Date2 ="2012/02/28"
Result. Numbers of Month =1 |
- 再来几个测试用例怎么样?你的问题没有说明。这是一个问题,在这个问题中,找出你想要的比实现它更困难。
- stackoverflow.com/questions/1525990/difference-in-months/月
- 首先,你应该清楚地知道什么是"两个日期之间的月数"。如2012-01-25至2012-02-01或2012-02-24等。如果是,请检查答案是否与您的想法一致。
- @大卫·布拉班特非常感谢你的链接。
- @尤金:非常感谢。我只想知道一个月。如果这两个日期是2012-01-25和2012-02-01,我希望结果是1。另外202-01-25和2012-02-24的情况,我希望结果是1。
- @lelewin bytes.com/topic/c-sharp/answers/…或stackoverflow.com/questions/1083955/…
这将导致月份之间的差异:
1
| int months = (Date2.Year - Date1.Year) * 12 + Date2.Month - Date1.Month; |
- 这是一个可能的答案,取决于运营商实际想要什么。例如,对于MonthBetween(2012-06-01、2012-05-31),这将返回1,这可能是或可能不是OP想要的。
- 但这根本不考虑月日。例如,5月31日到6月1日的月数与5月1日到6月31日的月数相同,我认为没有多少人会期待这样的结果。
- @乔恩·斯基特:我对我不清楚的问题深表歉意。因为系统要求,我根本不想考虑每月的某一天。现在我已经编辑了我的问题。
我的Noda Time项目提供了:
1 2 3 4
| LocalDate date1 = new LocalDate (2011, 11, 1);
LocalDate date2 = new LocalDate (2012, 2, 1);
Period period = Period .Between(date1, date2, PeriodUnits .Months);
long months = period .Months; // 3 |
有关更多信息,请参阅项目文档中的算术。