0

我正在尝试设置日期格式,但是当我运行此代码时

String oldstring = "2013-01-1";
System.out.println("oldstring = "+oldstring);
Date date = new SimpleDateFormat("yyyy-mm-dd").parse(oldstring);
System.out.println("datefield = "+date);

我拿结果:

oldstring = 2013-01-1
datefield = Tue Jan 01 00:01:00 MSK 2013

为什么日期字段不等于 2013-01-1?

4

3 回答 3

4

起初mmyyyy-mm-dd平均分钟而不是月份。设置月份使用MM

它看起来像这样:

Date date = new SimpleDateFormat("yyyy-MM-dd").parse(oldstring);

更新 试试这个:

String oldstring = "2013-01-1";
System.out.println("oldstring = "+oldstring);
Date date = new SimpleDateFormat("yyyy-mm-dd").parse(oldstring);
String sdf = new SimpleDateFormat("yyyy-mm-dd").format(date);
System.out.println("datefield = "+sdf);

如果您不使用new SimpleDateFormat("yyyy-mm-dd").format(date); 您将获得包含所有信息的标准日期格式。如果你想要特殊格式,你需要使用
new SimpleDateFormat("yyyy-mm-dd").format(date);

另请阅读有关日期格式的这篇文章

于 2013-04-01T09:09:47.173 回答
3

datefield 的类型是 Date,因此 toString 方法基本上总是返回相同的格式,因为您没有覆盖它。

所以你需要做的,基本上是:

String oldstring = "2013-01-1";
System.out.println("oldstring = "+oldstring);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(oldstring);
System.out.println("datefield = "+date);
String outDateStr = sdf.format(date);
System.out.println("newstring = "+outDateStr);
于 2013-04-01T09:12:27.437 回答
2

使用 MM 表示月份。mm 是分钟

于 2013-04-01T09:10:11.613 回答