Получить неправильную дату из объекта даты

Вопрос:

У меня есть код

import java.text.SimpleDateFormat;
import java.util.Date;

public class TestClass {

public static void main(String args[]) {
SimpleDateFormat f = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS");
Date d = new Date();
System.out.println(f.format(d));
}
}

Я ожидал, что результат должен быть

OutPut: 2013-07-05 19:07:983 (current date time)

Но я получаю вывод следующим образом

Output: 2013-07-186 19:07:983

В чем проблема в моем коде? Когда я печатаю эту строку d.toString() я получаю правильную дату.

Лучший ответ:

Ваш формат неверен по-разному. Вы хотите yyyy-MM-dd HH:mm:ss

  • yyyy — календарный год (не в течение года, так как YYYY будет)
  • MM — месяц года
  • dd — день месяца (а не день года, поскольку DD будет)
  • HH — час дня (24 часа)
  • mm — минута часа (не месяц, как MM)
  • ss — второй (не миллисекунда, поскольку SS будет)

Для получения более подробной информации см. Javadoc для SimpleDateFormat.

Кроме того, по умолчанию SimpleDateFormat будет использовать часовой пояс системы по умолчанию — вы должны подумать, действительно ли это часовой пояс, который вы хотите. Даже если вы явно этого хотите, может быть яснее установить его явно. Тоже язык.

Ответ №1

для дней используйте dd вместо DD

Ваша строка должна быть:

"yyyy-MM-dd HH:mm:ss"

У вас есть еще несколько ошибок в исходной строке. Вы можете прочитать немного больше о SDF и синтаксисе: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

Ответ №2

Попробуйте отформатировать дату как
yyyy-MM-dd HH:mm:ss

Если вы хотите также отобразить миллисекунды, попробуйте:
yyyy-MM-dd HH:mm:ss.SSS

Ответ №3

Вы должны использовать "yyyy-MM-dd HH:mm:SS". DD на Day in year. Посмотрите на документы java.

Также SS — миллисекунда, а ss — секунды в минуту. Используйте тот, который вы предпочитаете.

Ответ №4

Измените свой формат даты-образца для yyyy-MM-dd HH:mm:ss Я также рекомендовал бы использовать JodaTime вместо этого.

Оцените статью
TechArks.Ru
Добавить комментарий