3

我想创建一个Calendar,但MonthDisplayHelper返回的值不正确(31表示 2013 年 2 月,即28天)。我究竟做错了什么?

DateTime mRightNow = DateTime.Now;
MonthDisplayHelper mHelper = new MonthDisplayHelper(mRightNow.Year, mRightNow.Month, 2);
Log.Info("cal", mHelper.NumberOfDaysInMonth);
4

1 回答 1

4

您正在混合 .Net 和 Java DateTime 类!

.Net 月数以 1 为基础

Java 月份是从 0 开始的

所以 DateTime.Now 是 .Net 并在第二个月(二月)的某一天返回

但是 MonthDisplayHelper 在 Java 中,因此将 2 解释为第三个月(三月)


使用 mRightNow-1 修复此问题

也许考虑使用扩展方法使其更具可读性

public static class JavaDateTimeExtensions
{
    public static int JavaMonth(this DateTime input)
    {
        return input.Month - 1;
    }
}
于 2013-02-07T16:15:33.537 回答