2013-10-13 4 views
6

Я пытаюсь получить фактический месяц от Calendar, используя следующие:Calendar.MONTH дает неправильное значение

Calendar c = Calendar.getInstance();   
String time = String.valueOf(c.get(Calendar.MONTH)); 

По настройки системы «Настройки -> Дата & Время» фактический месяц 10 в то время как get(Calendar.MONTH) возвращается 09.

+0

Вам нужно вычесть 1 из них, так как месяцы идут от 0..11 – BennyTheNerd

ответ

6

Calendar.MONTH возвращает месяц, который равен нулю на основе именно поэтому он дает 1 меньше, чем фактический месяц Добавить 1, чтобы получить правильное значение

String time = String.valueOf(c.get(Calendar.MONTH)+1); 
2

Calendar.MONTH

возвращается

0 for 1st month (jan) 
1 for 2nd month (feb) 
. 
. 
11 for 12th month (dec) 

Docs

Так изменить код

String time = String.valueOf(c.get(Calendar.MONTH)+1);// added 1 
0

Я предлагаю попробовать

@Override 
public void onSelectedDayChange(CalendarView view, int year, int month, int day) { 
Toast.makeText(getApplicationContext(), month+1 + "/" + day + "/" + year, Toast.LENGTH_SHORT).show(); 
calDate = month+1 + "/" + day + "/" + year; } 
}); 
+0

Сводные строки для создания дат небезопасны для интернационализации и ужасной практики. Пожалуйста, используйте форматы даты системной библиотеки. –

Смежные вопросы