2013-07-03 79 views
4

是否可以格式化JodaTime日期。Jodatime日期格式

下面是代碼:

private static LocalDate priorDay(LocalDate date1) { 
     do { 
     date1 = date1.plusDays(-1); 
     } while (date1.getDayOfWeek() == DateTimeConstants.SUNDAY || 
      date1.getDayOfWeek() == DateTimeConstants.SATURDAY); 
     //System.out.print(date1); 
     return date1; 
    } 

這裏date1的收益爲:2013-07-02,但我想作爲02-JUL-13提前

感謝

回答

9

查看Joda DateTimeFormatter

您可能希望通過類似使用它:

DateTime dt = new DateTime(); 
DateTimeFormatter fmt = DateTimeFormat.forPattern("dd-MMM-yy"); 
String str = fmt.print(dt); 

這是比現有SimpleDateFormat類更好的解決方案。 Joda變體是線程安全的。舊的Java變體是(反直覺地)而不是線程安全!

13

是否可以格式化JodaTime日期

是。你想要DateTimeFormatter

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-yy") 
    .withLocale(Locale.US); // Make sure we use English month names 
String text = formatter.format(date1); 

這將給7月2日13日,但你可以總是大寫。

查看Input and Output部分的用戶指南獲取更多信息。

編輯:另外,作爲建議的羅希特:

String text = date1.toString("dd-MMM-yy", Locale.US); 

個人而言,我寧願一次創建格式化,爲常數,到處都重複使用它你需要它,但它是由您決定。

+2

我想你錯了'MM'而不是'MMM'那裏。 –

+0

@RohitJain:的確如此。修正了,謝謝。 –

+0

@JonSkeet ..出於好奇,除了'Locale',如果我使用'toString(「dd-MMM-yy」)',而不是'DateTimeFormatter.format()',會有什麼問題嗎? –