【问题标题】:Jodatime date formatJodatime 日期格式
【发布时间】:2013-07-01 07:32:01
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: java date jodatime date-format


    【解决方案1】:

    是否可以格式化 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,但您始终可以大写。

    有关详细信息,请参阅用户指南的Input and Output 部分。

    编辑:或者,按照 Rohit 的建议:

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

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

    【讨论】:

    • 我认为您在此处输入错误 MM 而不是 MMM
    • @JonSkeet.. 出于好奇,如果我使用toString("dd-MMM-yy"),而不是DateTimeFormatter.format(),除了Locale,还会有什么问题吗?
    • @RohitJain:可能不会——您可以单独指定语言环境。不过,创建一次格式可能更有效,而且可重用性也更高。
    • 赞赏。但是,我们如何将其大写。它只是 date1.toUpperCase 还是“dd-mmm-yy”?
    • @uval:说实话,不是很多——但我认为这有点离题了。
    【解决方案2】:

    查看 Joda DateTimeFormatter

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 2012-12-07
      • 2012-10-08
      • 2012-09-06
      • 2014-08-15
      • 2016-02-29
      • 2015-12-12
      相关资源
      最近更新 更多