Cle*_*Ong 6 java date simpledateformat
我目前的日期格式是:08/11/2008 00:00
我需要将此输出转换为2008/11/08 00:00然而,使用SimpleDateFormat进行研究它无法这样做并给我一个完全不同的输出,这里是我的代码如下:
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy/MM/dd HH:mm")
Date starting= simpleDateFormat2.parse(startTime);
System.out.println("" + simpleDateFormat2.format(starting) + " real date " + startTime);
Run Code Online (Sandbox Code Playgroud)
我知道我正在解析正确的字符串,因为发生以下输出:
0014/05/01 00:00 real date 08/11/2008 00:00
Run Code Online (Sandbox Code Playgroud)
我不太确定机械师如何检测到0014/05/01 00:00而不是
2008/11/08 00:00
我期待所有的建议提前谢谢
您需要做的第一件事是将原始值解析为Date
对象
String startTime = "08/11/2008 00:00";
// This could be MM/dd/yyyy, you original value is ambiguous
SimpleDateFormat input = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date dateValue = input.parse(startTime);
Run Code Online (Sandbox Code Playgroud)
完成后,您可以dateValue
按照您想要的任何方式格式化...
SimpleDateFormat output = new SimpleDateFormat("yyyy/MM/dd HH:mm");
System.out.println("" + output.format(dateValue) + " real date " + startTime);
Run Code Online (Sandbox Code Playgroud)
哪个输出:
2008/11/08 00:00 real date 08/11/2008 00:00
Run Code Online (Sandbox Code Playgroud)
您获得的原因0014/05/01 00:00
是SimpleDateFormat
(当使用时yyyy/MM/dd HH:mm
)正在使用08
年份,11
月份和2008
当天,它正在内部滚动值以将值更正为有效日期
我想贡献现代答案。
\n\n DateTimeFormatter currentFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu HH:mm");\n DateTimeFormatter convertedOutputFormatter = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm");\n String startTime = "08/11/2008 00:00";\n LocalDateTime starting = LocalDateTime.parse(startTime, currentFormatter);\n System.out.println(starting.format(convertedOutputFormatter));\n
Run Code Online (Sandbox Code Playgroud)\n\n这打印
\n\n2008/11/08 00:00\n
Run Code Online (Sandbox Code Playgroud)\n\n您尝试使用的类SimpleDateFormat
早已过时并且非常麻烦。你已经经历过一些麻烦了。相反,我正在使用并推荐java.time
现代 Java 日期和时间 API。
正如其他人所说,您需要使用两种格式化程序,一种用于指定当前格式,另一种用于指定所需格式。
\n\n您的格式化程序yyyy/MM/dd HH:mm
将 08/11/2008 解释为通用时代第 8 年第 11 个月的第 2008 天。它不会干扰 11 月SimpleDateFormat
只有 30 天的默认设置,它只是继续计数接下来的月份和年份,最终得出五年半后的日期(2008 年除以 365.25 为非常接近 5.5)。
java.time
我的 Java 版本吗?如果至少使用Java 6,则可以。
\n\norg.threeten.bp
和子包导入日期和时间类。java.time
. 归档时间: |
|
查看次数: |
14406 次 |
最近记录: |