请尝试将两个概念区分开:您的数据和向用户呈现的数据(或用于其他目的的格式设置,例如包含在JSON中)。的
int保持值7可以表示为(格式化成)7,07,007或7,同时仍保持刚好相同的值而没有任何格式化信息-
外的格式化谎言
int。同样,a
Date具有一个时间点,它可以表示为(格式为“ 2017年6月1日,12:46:01.169”,“
2017/06/01”或“ 2017年6月1日”),相同的值,不包含任何格式信息-格式位于之外
Date。
根据您的要求,一种选择是将日期存储为
Date(或更好的是,现代日期和时间类之一的实例,如
LocalDate),并保留一个格式化程序,以便您每次需要将其显示给用户。如果此方法不起作用,则需要以特定格式
存储 日期,然后将其存储为
String。
Java 8(7,6)日期和时间API
现在,我一直在评论中使用较新的Java日期和时间类,因此,不向您展示它们是否有效可能是不公平的。该问题尝试将格式设置为
yyyy-MM-dd,我们可以使用以下代码来实现。
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("uuuu/MM/dd"); for (LocalDate date : localDates) { String formatterDate = date.format(dateFormatter); System.out.println(formatterDate); }一口气我得到了
2017/05/232017/06/01
如果列表中的对象具有其他类型
LocalDate,则大多数其他较新的日期和时间类型可以使用相同的方式以完全相同的方式进行格式化
DateTimeFormatter。
Instant在这方面有一点特殊之处,因为它不包含日期,但是您可以例如
myInstant.atZone(ZoneId.of("Europe/Oslo")).format(dateFormatter)获取该日期在奥斯陆所在时区的日期。现代类是在Java 8中引入的,在Java 9中得到了一些增强。它们已在ThreeTen
Backport中向后移植到Java
6和7,其中包括适用于Android的特殊版本ThreeTenABP。因此,我真的没有理由不解释为什么您不希望在自己的代码中使用它们。


![Java日期更改格式[重复] Java日期更改格式[重复]](http://www.mshxw.com/aiimages/31/469727.png)
