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

时间:2013-07-05 14:43:27

标签: 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.println(f.format(d));        
  }
}

我预计输出应为

OutPut: 2013-07-05 19:07:983 (current date time)

但我得到如下输出

Output: 2013-07-186 19:07:983

我的代码有什么问题?当我打印这一行d.toString()时,我得到了正确的日期。

5 个答案:

答案 0 :(得分:7)

您的格式在各方面都有误。你想要yyyy-MM-dd HH:mm:ss

  • yyyy - 日历年(不是周年,YYYY将是)
  • MM - 一年中的一个月
  • dd - 每月的某一天(不是一年中的某一天,因为DD会是)
  • HH - 一天中的小时(24小时制)
  • mm - 小时(不是月份,而MM将是
  • ss - 秒(不是毫秒,SS将是

有关详细信息,请参阅Javadoc SimpleDateFormat

此外,默认情况下SimpleDateFormat将使用系统默认时区 - 您应该考虑这是否实际上是您想要的时区。即使你明确地想要它,也可以更明确地设置它。同上这个地方。

答案 1 :(得分:3)

几天使用dd而不是DD

你的字符串应该是:

"yyyy-MM-dd HH:mm:ss"

您的初始字符串中确实存在其他一些错误。您可以在以下网址阅读更多关于SDF及其语法的内容:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

答案 2 :(得分:3)

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

如果你想显示毫秒,请尝试:
yyyy-MM-dd HH:mm:ss.SSS

答案 3 :(得分:2)

您必须使用"yyyy-MM-dd HH:mm:SS"DD适用于Day in year。看看java docs

同样SS是毫秒,而ss是一分钟的秒。使用你喜欢的那个。

答案 4 :(得分:0)

更改yyyy-MM-dd HH:mm:ss的日期格式样本 我也建议你使用JodaTime而不是那个。