3

を作成したいのですCalendarが、MonthDisplayHelper間違った値を返します(2013年2月の31 、つまり28日)。私は何が間違っているのですか?

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

1 に答える 1

4

.NetクラスとJavaDateTimeクラスを混在させています。

.Net月は1ベースです

Javaの月は0ベースです

つまり、DateTime.Nowは.Netであり、2か月目(2月)のある日を返します。

ただし、MonthDisplayHelperはJavaであるため、2を3か月目(3月)として解釈します。


mRightNow-1を使用してこれを修正します

おそらく、拡張メソッドを使用してこれを読みやすくすることを検討してください

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