【问题标题】:Joda-time from LocalDateTime string to LocalDate从 LocalDateTime 字符串到 LocalDate 的 Joda-time
【发布时间】:2017-04-06 03:24:18
【问题描述】:

我正在使用 JodaTime 来获取创建帐户的日期和时间。格式为

2017-04-05T12:38:35.585

当我得到它时,我将它作为字符串存储在我的数据库中,因此我四处寻找将其从字符串格式化为 LocalDate 的方法,但在我在网上找到的任何内容中都没有成功。在我看来,我的下一步是一个可怕的解决方案,循环遍历字符串,直到找到 T 并删除它之后的所有内容。所以我只剩下

2017-04-05. 

但如果可能的话,最好将日期设为

05/04/2017

【问题讨论】:

    标签: java android jodatime


    【解决方案1】:

    使用ISODateTimeFormat 获得LocalDateTime 并由此获得LocalDate。 注意使用权Locale

    String input="2017-04-05T12:38:35.585";
    
    LocalDateTime ldt = ISODateTimeFormat.localDateOptionalTimeParser()
                        .withLocale(Locale.ENGLISH)
                        .parseLocalDateTime(input);
    
    System.out.println(ldt.toLocalDate());//prints 2017-04-05
    

    【讨论】:

      【解决方案2】:

      我正在使用 joda-time 2.7

      LocalDateTime 类有一个构造函数,它接受 String 并解析它。然后你只需用你想要的模式调用toString() 方法:

      String input = "2017-04-05T12:38:35.585";
      LocalDateTime d = new LocalDateTime(input);
      System.out.println(d.toString("dd/MM/yyyy"));
      

      输出:

      05/04/2017
      

      注意:您也可以使用ISODateTimeFormat 进行解析,并使用DateTimeFormatter 代替toString() 来获取输出:

      LocalDateTime d = ISODateTimeFormat.localDateOptionalTimeParser().parseLocalDateTime(input);
      DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/yyyy");
      System.out.println(fmt.print(d));
      

      输出将是相同的。

      【讨论】:

      • 谢谢,我在两个答案中都尝试了这两种解决方案并且都有效:)
      猜你喜欢
      • 2021-08-10
      • 2015-05-30
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      相关资源
      最近更新 更多