Joda-разовый DateFormatter для отображения миллисекунд, если ненулевой

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

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

(Я хотел бы постараться не осуществлять рефакторинг все места, что я использую средства форматирования, так как это - большая кодовая база.)

6
задан Basil Bourque 21 June 2014 в 04:51
поделиться

1 ответ

Насколько я знаю, опциональных шаблонов не существует. Однако, я думаю, что вы, возможно, слишком задумываетесь над своей проблемой.

// Sample variable name - you'd probably name this better.
public static DateTimeFormat LONG_FORMATTER = DateTimeFormatter.forPattern("yyyy MM dd HH:mm:ss.SSS");

// Note that this could easily take a DateTime directly if that's what you've got.
// Hint hint non-null valid date hint hint.
public static String formatAndChopEmptyMilliseconds(final Date nonNullValidDate) {
    final String formattedString = LONG_FORMATTER.print(new DateTime(nonNullValidDate));
    return formattedString.endsWith(".000") ? formattedString.substring(0, formattedString.length() - 4) : formattedString;
}

Длина может быть не совсем правильной для подстроки (непроверенный код), но вы поняли идею.

16
ответ дан 8 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: