Java 如何使用SimpleDateFormat格式化我的日期?

Java 如何使用SimpleDateFormat格式化我的日期?,java,date,simpledateformat,Java,Date,Simpledateformat,我正在尝试设置日期格式,但当我运行此代码时 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 = T

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

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?

开始时
mm
yyy-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);
如果不使用新的SimpleDataFormat(“yyyy-mm-dd”)。格式(日期) 您将获得包含所有信息的标准日期格式。如果需要特殊格式,则需要使用
新简化格式(“yyyy-mm-dd”)。格式(日期)


使用MM表示月份。mm代表分钟,日期字段的类型是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);

奇怪的是,当您已经有了yyyy-MM-dd格式的日期时,为什么还要再次格式化它呢?对于我在vaadin中的日期字段。我想设置为2013-01-01您应该使用
格式
而不是
解析
<代码>字符串newDate=新的SimpleDateFormat(“yyyy-MM-dd”)。格式(日期)