如何在Java中从2003年6月10日01.57.07.848594000 PM转换为yyyy-MM-dd-HH24.MI.SS.FF6
答案 0 :(得分:4)
首先查看
您的问题不是唯一的,也不是罕见的,对您的问题进行一些尽职调查将得到更大的回报。
您的基本问题实际上是两个问题:
String
解析为日期/时间对象我很高兴在这个时代,您可以使用至少3种不同的方法来解决这些问题。但是,您最好使用Java 8中引入的Date / Time API。
话虽如此,您可能会有两个主要的绊脚石才能使某些东西正常工作。
两者都与您的输入(JUN
和pm
)不常见的情况有关。
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
,以更好地了解格式化程序规范