java字符串到datetime转换问题

我似乎无法看到下面的示例代码的问题。 出于某种原因,似乎忽略了年份,并且说日期是相同的,如下面的输出中所示。 我一定很遗憾。

2006年1月28日
2007年1月16日
2008年4月1日星期二00:00:00
2008年4月1日星期二00:00:00
DONE

import java.util.*; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; class ExampleProgram { public static void main(String[] args){ DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); String d1String = "01/28/2006"; String d2String = "01/16/2007"; System.out.println(d1String); System.out.println(d2String); Date d1=null; try { d1 = df.parse(d1String); } catch (ParseException e) { System.out.println(e.getMessage()); } Date d2=null; try { d2 = df.parse(d2String); } catch (ParseException e) { System.out.println(e.getMessage()); } System.out.println(d1); System.out.println(d2); System.out.println("done"); } } 

 "dd/MM/yyyy" 

应该读:

 "MM/dd/yyyy" 

正如Peter所说,这些字母的含义可以在这里的文档中找到: http : //java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

它没有给你你所期望的是因为彼得说SimpleDateFormat应该读作"MM/dd/yyyy"

结果是说它们看起来是平等的原因是因为你给它的格式是"dd/MM/yyyy"d1String的月份是28.它需要28到12,增加一年, 16 – 12,再添加一年,结果是4(4月),现在是2008年。对于d2String

您可以尝试将日期声明为Date对象。