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
-一天中的一小时(24小时制)HH
小时分钟数(而不是月,因为mm
会是)mm
秒(不是毫秒,就像ss
那样)ss
此外,默认情况下<代码> 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,因此我不想留下评论。:)