Используя Joda-разовый, я хочу отобразить список дат, которые могут или не могут иметь миллисекунд на них. Если определенная запись имеет миллисекунды, то она должна быть отображена как yyyy MM dd HH:mm:ss.SSS
. Если это не имеет millis, мне нужен в отображенный как yyyy MM dd HH:mm:ss
.
Я предполагаю, что общий вопрос: существует ли способ описать дополнительный параметр строки формата?
(Я хотел бы постараться не осуществлять рефакторинг все места, что я использую средства форматирования, так как это - большая кодовая база.)
Насколько я знаю, опциональных шаблонов не существует. Однако, я думаю, что вы, возможно, слишком задумываетесь над своей проблемой.
// 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;
}
Длина может быть не совсем правильной для подстроки (непроверенный код), но вы поняли идею.