2010-05-10 33 views
6

Sử dụng Joda-Time, tôi muốn hiển thị danh sách các ngày có thể hoặc không có mili giây trên chúng. Nếu một mục nhập nhất định có mili giây, thì nó sẽ được hiển thị như yyyy MM dd HH:mm:ss.SSS. Nếu nó không có millis, tôi cần nó hiển thị là yyyy MM dd HH:mm:ss.Joda-Time DateFormatter để hiển thị mili giây nếu không phải là

Tôi cho rằng câu hỏi chung là: Có cách nào để mô tả thông số chuỗi định dạng tùy chọn không?

(Tôi muốn tránh refactoring tất cả những nơi mà tôi sử dụng và định dạng vì đây là một cơ sở mã lớn.)

Trả lời

12

Theo như tôi biết, không có mô hình tùy chọn. Tuy nhiên, tôi nghĩ rằng bạn có thể đang suy nghĩ quá mức về vấn đề của mình.

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

Độ dài có thể không chính xác cho chuỗi con (mã chưa được kiểm tra), nhưng bạn có ý tưởng.

+0

Cảm ơn. Tôi đã mở rộng 'DateTimeFormatter' để lồng logic này ngay tại đó và nó hoạt động khá tốt. Tôi vẫn có thể vượt qua trình định dạng của tôi và nhận được kết quả mà tôi muốn. (Và tôi đoán là tôi đã đánh giá cao nó. Heh.) – Mike

Các vấn đề liên quan