2013-07-03 67 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()',会有什么问题吗? –