Ответ 1
Правильно ли я предполагаю, что это работает на эмуляторе? Если да, установите дату эмулятора правильно, и это должно быть правильно.
Из памяти этот код должен делать то, что вы ожидаете.
Я пытаюсь получить сегодня Year, Month и Date, используя следующий код:
Calendar calendar = Calendar.getInstance();
int thisYear = calendar.get(Calendar.YEAR);
Log.d(TAG, "# thisYear : " + thisYear);
int thisMonth = calendar.get(Calendar.MONTH);
Log.d(TAG, "@ thisMonth : " + thisMonth);
int thisDay = calendar.get(Calendar.DAY_OF_MONTH);
Log.d(TAG, "$ thisDay : " + thisDay);
Но он дает "2012 год за год за месяц и 28 на дату", который не является сегодня. Что я сделал неправильно?
Правильно ли я предполагаю, что это работает на эмуляторе? Если да, установите дату эмулятора правильно, и это должно быть правильно.
Из памяти этот код должен делать то, что вы ожидаете.
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
calendar.get(Calendar.YEAR)
Месяц начинается с нуля, поэтому вам нужно добавить 1 с данным месяцем, чтобы показать номер месяца, с которым мы знакомы.
int thisMonth = calendar.get(Calendar.MONTH);
Log.d(TAG, "@ thisMonth : " + (thisMonth+1));
Это покажет вам текущий месяц, начинающийся с 1.
Я пробовал ваш код и дает правильный вывод. Вы должны попробовать проверить время в своем эмуляторе/телефоне, на котором вы пытаетесь использовать этот код.
В соответствии с документами getInstance он устанавливает текущую дату и время по умолчанию.
Попробуйте использовать:
Date dt = new Date();
dt.getYear();
dt.getMonth();
dt.getDay();
и посмотрите, получится ли у вас тот же результат. Если да, то ваша системная дата, вероятно, не синхронизирована. Для более подробной информации документацию по классу даты:
Это дает время и дату вашей системы Android, поэтому сначала проверьте это.