4

是否可以格式化 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

提前致谢

4

2 回答 2

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);

这将给出 02-Jul-13,但您始终可以将其大写。

有关详细信息,请参阅用户指南的输入和输出部分。

编辑:或者,正如 Rohit 所建议的那样:

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

就我个人而言,我更愿意创建一次格式化程序,作为一个常量,然后在需要它的任何地方重复使用它,但这取决于你。

于 2013-07-03T14:37:11.220 回答
9

查看 Joda DateTimeFormatter

您可能想通过以下方式使用它:

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

这是一个比现有的SimpleDateFormat类更好的解决方案。Joda 变体是线程安全的。旧的 Java 变体(违反直觉)不是线程安全的!

于 2013-07-03T14:37:03.620 回答