如何在Java中从02年6月10日01.57.07.848594000 PM转换为yyyy-MM-dd-HH24.MI.SS.FF6

时间:2018-10-02 23:25:09

标签: java datetime-format datetime-parsing

如何在Java中从2003年6月10日01.57.07.848594000 PM转换为yyyy-MM-dd-HH24.MI.SS.FF6

1 个答案:

答案 0 :(得分:4)

首先查看

您的问题不是唯一的,也不是罕见的,对您的问题进行一些尽职调查将得到更大的回报。

您的基本问题实际上是两个问题:

  • 如何将String解析为日期/时间对象
  • 如何格式化日期/时间对象

我很高兴在这个时代,您可以使用至少3种不同的方法来解决这些问题。但是,您最好使用Java 8中引入的Date / Time API。

话虽如此,您可能会有两个主要的绊脚石才能使某些东西正常工作。

两者都与您的输入(JUNpm)不常见的情况有关。

Java 8引入了DateTimeFormatterBuilder类,可用于解决此问题。

DateTimeFormatter dtf = new DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .appendPattern("dd-MMM-yy hh.mm.ss.SSSSSSSSS a")
        .toFormatter(Locale.ENGLISH);

LocalDateTime ldt = LocalDateTime.parse("10-JUN-02 01.57.07.848594000 pm", dtf);

这将为您提供输入的日期/时间表示。

然后,您只需要另一个DateTimeFormatter即可根据需要格式化输出...

DateTimeFormatter output = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS", Locale.ENGLISH);
System.out.println(output.format(ldt));

输出...

2002-06-10-13.57.07.848594

请确保您已通读JavaDocs for DateTimeFormatter,以更好地了解格式化程序规范