-1

我有这个代码

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(),我得到了正确的日期。

4

5 回答 5

7

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

  • yyyy- 日历年(不是周年YYYY
  • MM- 一年中的月份
  • dd- 月中的某一天(不是一年中的某一天DD
  • HH- 一天中的小时(24 小时制)
  • mm- 小时的分钟(而不是月份MM
  • ss- 秒(不是毫秒SS

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

此外,默认情况下SimpleDateFormat将使用系统默认时区 - 您应该考虑这是否实际上是您想要的时区。即使您确实明确希望这样做,也可能更清楚地明确设置它。同上语言环境。

于 2013-07-05T14:46:24.287 回答
3

几天使用 dd 而不是 DD

你的字符串应该是:

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

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

于 2013-07-05T14:45:31.067 回答
3

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

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

于 2013-07-05T14:45:34.127 回答
2

你必须使用"yyyy-MM-dd HH:mm:SS". DD是为Day in year. 看看java 文档

也是SS毫秒,而ss一分钟是秒。使用您喜欢的那个。

于 2013-07-05T14:45:03.580 回答
0

更改您的日期格式示例,因为yyyy-MM-dd HH:mm:ss 我还建议您使用 JodaTime 代替那个。

于 2013-07-05T14:48:09.360 回答