【发布时间】:2019-08-22 03:39:27
【问题描述】:
为什么打印的日期是00 而不是01?
DateFormat myFormatter = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = myFormatter.parse("01/02/2016"); //assume date today is Feb 01, 2016
System.out.println(myFormatter.format(newDate));
控制台中打印的日期为:00/02/2016
但我想要的是:01/02/2016
请有人解释一下我的代码可能出了什么问题? 我该如何解决?
P.S:2016 年 2 月有 29 天
【问题讨论】:
-
你确定吗?我无法重现您的问题,而且我无法理解这是如何发生的。
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate和DateTimeFormatter。 -
要么你的问题在别处。 或者这是一个多线程问题。老式的
SimpleDateFormat不是线程安全的,因此从两个或多个不同的线程中使用它有时很容易出现此错误。 Simple Date format returns Wrong date intermittently [duplicate] 的可能重复项。 -
@OleV.V.是的,它是一个多线程程序。日期变量被传递给其他 4 个方法。最后三种方法显示正确的输出。但只有第一种方法给出不正确的输出。我会尝试使用 DateTimeFormatter。
-
我已撤回我的投票,因为不可复制而关闭。现在我不能投票关闭作为上述问题的副本,所以如果其他人愿意这样做?
标签: java date simpledateformat date-format