2010-05-10 10 views
6

Joda-Time kullanarak, üzerinde milisaniye olabilecek veya olmayabilecek tarihlerin listesini görüntülemek istiyorum. Belirli bir giriş milisaniye içeriyorsa, yyyy MM dd HH:mm:ss.SSS gibi görüntülenmelidir. Millis yoksa, ona yyyy MM dd HH:mm:ss olarak gösterilmeli.Joda-Time DateFormatter, sıfırdan farklısa milisaniye görüntülemek için

Genel soru şudur: İsteğe bağlı bir biçim dizesi parametresini tanımlamanın bir yolu var mı?

(Bu büyük bir kod tabanı olduğundan ben biçemleyicileri kullanmak yerlerin tümüne üstlenmeden önlemek istiyorum.)

cevap

12

olarak bildiğim kadarıyla, hiçbir opsiyonel desenleri var. Ancak, bence probleminizi gözden kaçırıyor olabilirsiniz.

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

Uzunluk, substring (test edilmemiş kod) için tam olarak doğru olmayabilir, ancak siz bu fikri alırsınız.

+0

Teşekkürler. DateTimeFormatter'ı bu mantığa oraya yerleştirmek için uzattım ve oldukça iyi çalışıyor. Biçimlendiricimin etrafından geçip istediğim sonuçları alabilirim. (Ve sanırım onu ​​yıkıyordum. Heh.) – Mike