我需要在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/15”,然后将其传递给另一个函数
答案 0 :(得分:5)
因为旧的java日期被破坏了,我们都应该停止学习,因为java8中的新功能将来对我们所有人都有帮助,这里有另一个使用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));
答案 1 :(得分:3)
阅读SimpleDateFormat javadoc:
月份是大写的M:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
...
formatter = new SimpleDateFormat("M/d/yyyy");
小写字母m是分钟。
答案 2 :(得分:0)
m - 分钟
M - 月
请阅读日期和时间模式 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html