在java中重现字符串日期

我需要在java中比较两个字符串日期:

String date1 = "2017-05-02"; String date2 = "5/2/2017"; //formatter for the first date SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd"); Date formattedDate1 = formatter.parse(date1); //formatter for the second date formatter = new SimpleDateFormat("m/d/yyyy"); Date formattedDate2 = formatter.parse(date2); //Wrong results String formatted1 = formattedDate1.toString(); //Mon Jan 02 00:05:00 EET 2017 String formatted2 = formattedDate2.toString(); //Mon Jan 02 00:05:00 EET 2017 

实际上,如果我比较那些2我可能会得到’真实’但我的日期不是1月,它是’2017年5月5日’。

另一个问题是我不能使用Date对象,我需要实际将“2017-05-02”转换为“2017/2/5”,然后将其传递给另一个函数

阅读SimpleDateFormat javadoc:

月是大写的M:

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 

 formatter = new SimpleDateFormat("M/d/yyyy"); 

小写m是分钟。

而且因为旧的java日期被打破了,我们都应该停止学习,并且由于java8中的新function将来对我们所有人都有帮助,这里使用javaTime api的另一个选项

 String date1 = "2017-05-02"; String date2 = "5/2/2017"; LocalDate d1 = LocalDate.parse(date1, DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDate d2 = LocalDate.parse(date2, DateTimeFormatter.ofPattern("M/d/yyyy")); System.out.println(d1); System.out.println(d2); System.out.println(d2.isEqual(d1)); 

– 分钟
M – 月

请阅读日期和时间模式http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html