没有日期的日期使用的正确类是LocalDate
。LocalDate
是现代Java日期和时间API java.time的一部分。
因此,您可以做的最好的事情就是是否可以修改getStartDate
用于返回a的方法LocalDate
:
DateTimeFormatter dateFormatter = DateTimeFormatter
.ofLocalizedDate(FormatStyle.SHORT)
.withLocale(Locale.forLanguageTag("en-IE"));
LocalDate d = eventList.get(0).getStartDate();
String dateString = d.format(dateFormatter);
System.out.println(dateString);
输出示例:
2012年3月21日
如果您无法更改getStartDate
,则仍然可以添加新方法,以返回所需的类型。但是,如果您现在不能负担得起,请转换Date
您得到的老式(我假设是java.util.Date
):
d = eventList.get(0).getStartDate();
LocalDate dateWithoutTime = d.toInstant()
.atZone(ZoneId.of("Asia/Kolkata"))
.toLocalDate();
请插入假定的时区Date
。您可以将其ZoneId.systemDefault()
用于JVM的时区设置,只有您可以随时从程序的其他部分或在同一JVM中运行的其他程序更改此设置。
这java.util.Date
堂课是六年前问这个问题时我们都在用的(不,不是全部;我是,而且我们很多)。java.time出来了几年后,并已取代了旧的Date
,Calendar
,SimpleDateFormat
和DateFormat
。认识到它们的设计不当。此外,Date
尽管名称不代表日期。这是一个时间点。其他答案是将时间四舍五入为JVM默认时区的一天的开始(“午夜”)。它不会删除一天中的时间,只会将其设置为通常的00:00。更改您的默认时区-就像我说的那样,即使在同一JVM中运行的另一个程序也可能在没有通知的情况下随时执行此操作-一切都会中断(经常)。
链接: Oracle教程:Date Time说明如何使用java.time
。
System.out.println(date)
最后一行之后说的呢?它肯定已经是所需的格式了,对吗?否则,您实际上尚未发布完整的代码。例如,您可能稍后将其转换回Date
对象,这将获得默认时间。