2013-04-01 42 views
0

我想设定一个日期格式,但是当我运行这段代码如何使用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 = Tue Jan 01 00:01:00 MSK 2013 

为什么的DateField不等于2013年1月1日?

+3

只是好奇,当你已经在YYYY-MM-DD格式的日期,你为什么要重新格式化? – Abi

+0

为我在vaadin的日期字段。我想设置它2013-01-01 –

回答

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); 
+0

它的工作谢谢 –

4

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

这将是这个样子:

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

UPDATE 试试这个:

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);

Also read this article about date formatting

+0

它不工作=/ –

+0

你得到了什么错误? –

+0

相同的结果,Лёша –

2

使用MM的一个月。 mm是分钟

+0

它不起作用 –

+0

你应该使用'format'而不是'parse'。 'String newDate = new SimpleDateFormat(“yyyy-MM-dd”)。format(date);' – rajesh

+0

我明白了,谢谢 –

相关问题