Обработка даты в Java - PullRequest
1 голос
/ 09 июня 2009

У меня есть 2 строки, которые на самом деле являются датами, но в другом формате:

  1. 2004-06-01 00:00:00 (Это значение я получаю из базы данных Excel через JDBC)
  2. 6/1/2004

Есть ли какой-либо предопределенный класс в Java, который я могу использовать для создания объекта типа Date? Так что я могу просто вызвать его конструктор над этими строками и, наконец, сравнить их.

Или мне придется написать собственную функцию для сравнения с использованием функций String? Пожалуйста, помогите.

Спасибо за чтение.

Ответы [ 3 ]

4 голосов
/ 09 июня 2009

Вы ищете SimpleDateFormat .

SimpleDateFormat является реализацией абстрактного DateFormat . Сначала вы определяете шаблон даты в конструкторе, а затем используете метод разбора.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
Date date = sdf.parse(dateString);

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

2 голосов
/ 09 июня 2009

Если вы получаете «Date String» из JDBC, вы делаете что-то не так - используйте ResultSet.getDate () .

2 голосов
/ 09 июня 2009

Нет конструктора Date, который принимает произвольно отформатированную строку, но вы могли бы написать метод достаточно легко:

Date parseDate(String dateFormat, String dateValue) throws ParseException {
    return new SimpleDateFormat(dateFormat).parse(dateValue);
}

Использование:

Date myExcelDate = parseDate("yyyy-MM-dd HH:mm:ss", "2004-06-01 00:00:00");
Date myOtherDate = parseDate("d/M/yyyy", "6/1/2004");

Вам необходимо поймать потенциальное исключение ParseException. См. SimpleDateFormat для подробностей о форматной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...