在java中转换字符串日期

时间:2017-06-08 08:11:23

标签: java string date date-formatting date-parsing

我需要在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”,然后将其传递给另一个函数

3 个答案:

答案 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