如何在java中从02年6月10日01.57.07.848594000 PM转换为yyyy-MM-dd-HH24.MI.SS.FF6
如何在java中从02年6月10日01.57.07.848594000 PM转换为yyyy-MM-dd-HH24.MI.SS.FF6如何在java中从02年6月10日01.57.07.848594000 PM转换为yyyy-MM-dd-HH24.MI.SS.FF6,java,datetime-format,datetime-parsing,Java,Datetime Format,Datetime Parsing,如何在java中从02年6月10日01.57.07.848594000 PM转换为yyyy-MM-dd-HH24.MI.SS.FF6 你的问题并不独特,也不罕见,在研究你的问题时进行一些尽职调查将获得更高的回报 你的基本问题实际上是两个问题: 如何将字符串解析为日期/时间对象 如何格式化日期/时间对象 我明白在这个时代,至少有3种不同的方法可以解决这些问题。但是,Java8中引入的日期/时间API应该是您的首选方法 话虽如此,你可能会有两个主要的绊脚石,让一些工作 两者都与您输入的
- 如何将
解析为日期/时间对象字符串
- 如何格式化日期/时间对象
JUN
和pm
)
Java8引入了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
请确保您通读了,以便更好地理解格式化程序规范,因此,您的基本问题是如何将
字符串
转换为日期/时间值,然后将其格式化为另一个字符串
——这两个问题都比较常见,以前可能多次被询问和回答过。我可能会建议您从oracle开始,并以此作为您研究的起点。我已经用oracle完成了这项工作,但从来没有用Java完成过。您必须认识到,虽然您可能没有这样做,但在您之前还有很多人这样做过。这不是一个罕见的问题。然而,我会给你一些余地,因为输入是不寻常的,HH24.MI.SS.FF6
意味着什么?你是想把纳秒缩短为微秒吗?@kari如果这对你很重要,那就用瞬间代替LocalDateTime。如果我不理解您的评论,您也可以原谅我,因为日期/时间api支持夏令时