Java DateFormat и SimpleDateFormat возвращают неверную дату ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Java DateFormat и SimpleDateFormat возвращают неверную дату

Сообщение Anonymous »

Сегодня вторник, 9 февраля 2010 г., и когда я печатаю дату, я получаю неверную дату:

Код: Выделить всё

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

Date today = formatter.parse(String.format("%04d-%02d-%02d",
Calendar.getInstance().get(Calendar.YEAR),
Calendar.getInstance().get(Calendar.MONTH),
Calendar.getInstance().get(Calendar.DAY_OF_MONTH)));

System.out.println("Today is " + today.toString());
Результат печати строки: «Сегодня суббота, 9 января, 00:00:00 CST 2010»

Это наверняка не суббота, 9 января, а вторник, 9 февраля. Я предполагаю, что делаю что-то не так, так может ли кто-нибудь сообщить мне, что здесь не так? Нужно ли вручную устанавливать день недели?

Обновить [/b] Примечание. Я не хочу инициализировать сегодня с помощью новой Date(), потому что я хочу, чтобы часы, минуты, секунды и миллисекунды были инициализированы значением 0. Это необходимо, чтобы я мог сравнить дату ввода пользователя с сегодняшней датой: если пользователь вводит сегодняшнюю дату, и я использую форматировщик для создания объекта Date, тогда, если я инициализирую сегодняшний день с помощью new Date() и сравниваю эти два даты – сегодня будет после даты, выбранной пользователем (что неверно). Таким образом, мне нужно инициализировать сегодняшний день в начале дня без часов/мин/сек/мс.

Подробнее здесь: https://stackoverflow.com/questions/223 ... -incorrect

Вернуться в «JAVA»