在 java 中转换字符串日期
Convert string dates in 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
实际上,如果我比较这两个,我可能会得到 'true' 但我的日期不是一月,而是 'May 5th 2017'。
另一个问题是我不能使用 Date 对象,我需要实际将“2017-05-02”转换为“5/2/2017”,然后将其传递给另一个函数
阅读 SimpleDateFormat javadoc:
月份大写 M:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
...
formatter = new SimpleDateFormat("M/d/yyyy");
小写的 m 是分钟。
米 - 分钟
月 - 月
请阅读日期和时间模式
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
并且由于旧的 java 日期已损坏,我们都应该停止学习它,并且由于 java8 中的新功能将来对我们所有人都有帮助,这里另一个选项使用 java时间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));
我需要比较 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
实际上,如果我比较这两个,我可能会得到 'true' 但我的日期不是一月,而是 'May 5th 2017'。
另一个问题是我不能使用 Date 对象,我需要实际将“2017-05-02”转换为“5/2/2017”,然后将其传递给另一个函数
阅读 SimpleDateFormat javadoc:
月份大写 M:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
...
formatter = new SimpleDateFormat("M/d/yyyy");
小写的 m 是分钟。
米 - 分钟
月 - 月
请阅读日期和时间模式 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
并且由于旧的 java 日期已损坏,我们都应该停止学习它,并且由于 java8 中的新功能将来对我们所有人都有帮助,这里另一个选项使用 java时间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));