我有代码
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()
时,我得到了正确的日期。
答案 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而不是那个。