Joda-Time DateFormatter для отображения миллисекунд, если ненулевой - PullRequest
6 голосов
/ 11 мая 2010

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

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

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

1 Ответ

15 голосов
/ 11 мая 2010

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

// 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;
}

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

...