Java 从日期对象获取错误的日期

Java 从日期对象获取错误的日期,java,date,simpledateformat,Java,Date,Simpledateformat,我有这个密码 import java.text.SimpleDateFormat; import java.util.Date; public class TestClass { public static void main(String args[]) { SimpleDateFormat f = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS"); Date d = new Date(); System.out.print

我有这个密码

import java.text.SimpleDateFormat;
import java.util.Date;

public class TestClass {

  public static void main(String args[]) {
    SimpleDateFormat f = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS");
    Date d = new Date();
    System.out.println(f.format(d));        
  }
}
我希望输出应该是

OutPut: 2013-07-05 19:07:983 (current date time)
但我得到的结果如下

Output: 2013-07-186 19:07:983
我的代码中有什么问题?当我打印这行时,我得到了正确的日期。

您必须使用
“yyyy-MM-dd HH:MM:SS”
DD
表示一年中的
。看一看这张照片


另外,
SS
是毫秒,而
SS
是一分钟内的秒。使用你喜欢的一个。

在几天内使用dd而不是dd

您的字符串应为:

"yyyy-MM-dd HH:mm:ss"
您的初始字符串中还有一些其他错误。您可以在以下位置阅读更多关于SDF及其语法的信息:

尝试将日期格式化为
yyyy-MM-dd HH:MM:ss

如果还想显示毫秒,请尝试:

yyyy-MM-dd HH:MM:ss.SSS

您的格式在许多方面都是错误的。您想要
yyyy-MM-dd HH:MM:ss

  • yyyy
    -日历年(而不是周年,如
    yyy
    所示)
  • MM
    -一年中的月份
  • dd
    -月日(而不是年日,因为
    dd
  • HH
    -一天中的一小时(24小时制)
  • mm
    小时分钟数(而不是月,因为
    mm
    会是)
  • ss
    秒(不是毫秒,就像
    ss
    那样)
有关更多详细信息,请参阅Javadoc


此外,默认情况下<代码> SimpleDateFormat <代码>将使用系统默认时区——您应该考虑这是否实际上是您想要的时区。即使您明确地想要它,也可以明确地设置它。与区域设置相同。

更改日期格式示例,用于
yyyy-MM-dd HH:MM:ss

我还建议您使用JodaTime,而不是那一个。

去看看日期模式<代码>“YYYY-MM-DD HH:MM:SS”应该是
“yyy-MM-DD HH:MM:SS”
,请参阅Sotirios发布的链接。@SotiriosDelimanolis。。。注意资本化。好吧,差不多了。我怀疑他实际上想要的是
yyyy-MM-dd HH:MM:ss
@JonSkeet-不知道OP想要的是毫秒还是秒。因此,就这样离开了它,而是给出了
ss
ss
的详细信息。你见过有人想要一个小时、分钟、毫秒的格式,而不是秒吗?你怎么知道OP并不是真的想让“小时:月:毫秒”变成这样呢?@JonSkeet-你是对的。我从未见过,但你永远不知道要求。我表示怀疑为什么他应该在这个具体的例子中使用JodaTime?乔恩,对不起,这是个错误,我本想按向上投票按钮的P我重新进行了向下投票,并在重新投票后立即向上投票。:)@总经理:好的。我觉得有点不对劲,但没有任何评论;)呵呵,正如我所说的,我一意识到我已经同意了你的答案,我就投了赞成票我真的不认为你会在这么短的时间内注意到d/V,因此我不想留下评论。:)