DatePicker显示错误的月份值

Alo*_*mar 50 android date datepicker

DatePicker在android中遇到问题,当我使用getMonth()方法然后它将返回错误的值.

例如:

DatePicker datepicker=new DatePicker();

int day=date.getDayOfMonth();
int month=date.getMonth();
int year=date.getYear();

t.setText(""+day+" / "+month+" / "+year);
Run Code Online (Sandbox Code Playgroud)

如果我选择1987年8月6日那么它将于1987年6月7日返回

我认为这是一个错误,如果不是告诉我原因请.

Pea*_*oto 75

Android SDK中所述,从0开始索引月份.这意味着8月是8月,或索引7,从而为您提供正确的结果.

将API返回的索引添加1以获得传统的单索引月份是一件简单的事情.

虽然此行为可能看起来很奇怪,它与java.util.Calendar类一致(虽然它与joda.time.DateTime一致).

  • 如果您有一个包含月份名称的数组,则希望将月份归零以与此数组匹配.这些日子没有这个问题,所有人都期望这个数字. (5认同)

Meh*_*ara 34

在Android中,当您从日期选择器中选择日期时,它会从0开始计算月份.因此,这意味着返回的月份值始终为month-1.

例如,如果选择八月(第8个月),则返回8-1 = 7.

这意味着您需要做的是将1添加到从DatePicker获得的月份值.

你可以这样做:

DatePicker datepicker = new DatePicker();

int day   = date.getDayOfMonth();
int month = date.getMonth()+1;  // here I added 1 to the month
int year  = date.getYear();

t.setText(day+" / "+month+" / "+year);
Run Code Online (Sandbox Code Playgroud)