2010-05-10 40 views
6

使用Joda-Time時,我想顯示可能有或沒有毫秒數的日期列表。如果某個條目有毫秒,那麼它應該顯示爲yyyy MM dd HH:mm:ss.SSS。如果它沒有millis,我需要它顯示爲yyyy MM dd HH:mm:ssJoda-Time DateFormatter在非零時顯示毫秒

我想一般的問題是:有沒有辦法來描述一個可選的格式字符串參數?

(我想避免重構的一切,我使用格式化,因爲這是一個大的代碼庫的地方。)

回答

12

據我所知,沒有可選模式。但是,我認爲你可能會推翻你的問題。

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

長度可能不完全正確的子字符串(未經測試的代碼),但你明白了。

+0

謝謝。我擴展了'DateTimeFormatter'來嵌套這個邏輯,並且它工作得很好。我仍然可以繞過我的格式化程序並獲得我想要的結果。 (而且我想我正在推翻它,嘿。) – Mike 2010-05-11 04:33:24