2016-07-13 3 views
0

Я пытаюсь получить дату с datePicker и создать объект java.util.Date, и я не понимаю, почему я получаю неправильный день недели в selectedDate переменная. Правильная переменная currentDate.Получение неправильного дня недели при использовании объекта java.util.Date

String dateStr = String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear) + "/" + String.valueOf(year); 
String timeStr = String.valueOf(hourOfDay) + ":" + String.valueOf(minute); 

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
Date selectedDate = simpleDateFormat.parse(dateStr + " " + timeStr); 
Date currentDate = Calendar.getInstance().getTime(); 

System.out.println("selectedDate = " + String.valueOf(selectedDate)); 
System.out.println("currentDate = " + String.valueOf(currentDate)); 

Выход:

selectedDate = Mon Jun 13 12:44:00 WEST 2016 
currentDate = Wed Jul 13 12:44:04 WEST 2016 

ответ

2

Вы должны проверить (печать или отлаживать) значение monthOfYear - выход показывает, что его значение равно 6, когда вы, кажется, ожидать, что это будет 7 (вероятно, потому что у вас нет 't учитывал тот факт, что datePicker.getMonth() возвращает значение от 0 до 11).

Поскольку вы не показываете, как вы получили значение, трудно сказать гораздо больше.

0

Попробуйте это:

Calendar c = Calendar.getInstance(); 

int[] date = { 
     c.get(Calendar.DATE), c.get(Calendar.MONTH), 
     c.get(Calendar.YEAR), c.get(Calendar.DAY_OF_WEEK) 
}; 

date[1]+=1; 

Эта установка использует класс календарь, который интегрирован в Android. дата [1] + = 1 требуется, чтобы получить точный месяц, поскольку индекс на нем идет от 0-11. Насколько мне известно, все остальные прекрасно.

0

Он действительно ищет меня, что некоторый момент вы начинаете считать от «0», а на другом - от «1».

Возможно, попробуйте передать строки на консоль для отладки в первую очередь.

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