Парсинг различных форматов Date

135
05 октября 2018, 03:50

Долго пытался разобраться как парсить различные форматы дат. На входе такие строки:

1987-03-23
null
1985-11-29
23-07-2000
17-10-1984

Нужно перевести в русский формат dd.MM.yyyy, а там где не соответствует паттерну вывести прочерк.

Answer 1

Решил вот так.

public class DateUtil {
public static Object extractTimestampInput(String strDate) {
    final List<String> dateFormats = Arrays.asList("yyyy-MM-dd", "dd-MM-yyyy", "MM-dd-yyyy", "MM/dd/yyyy", "dd/MM/yyyy");
    SimpleDateFormat sdf;
    //Наш формат 
    final String RU_FORMAT = "dd.MM.yyyy";
    String output = "-";
    //Пробегаем по всем паттернам
    for (String format : dateFormats) {
        sdf = new SimpleDateFormat(format, new Locale("ru"));
        //не пытаться анализировать даты, которые не совпадают с форматом
        sdf.setLenient(false);
        try {
            if (sdf.parse(strDate) != null) {
                Date date = sdf.parse(strDate);
                sdf.applyPattern(RU_FORMAT);
                return sdf.format(date);
            }
            break;
        } catch (ParseException e) {
        }
    }
    //Вывожу строку с прочерком
    return output;
  }
}

Вызвать метод из других классов можно так:

DateUtil.extractTimestampInput(входная_строка);
READ ALSO
Java swing + UI scale

Java swing + UI scale

Мне нужно организовать поддержку скалирования интерфейсаВ интерфейсе присутствуют кнопки с иконками и JPanel, на котором они лежат

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

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

У меня есть консоль, которая реализована на TextFlowВ ней меняется цвет, в зависимости от типа сообщения (ERROR - red, WARNING - yellow и тд)

222
Navigation Drawer переход к фрагментам или активити

Navigation Drawer переход к фрагментам или активити

Поискав на просторах интернета, на данный момент не смог найти ответа на свой вопрос, хотя в принципе его должны были неоднократно задавать

147
retrofit 2, экранирование двойных кавычек

retrofit 2, экранирование двойных кавычек

Имеется строка вида {"asdasd":"adsasd"}Формируется данная строка с помощью символа экранирования

151