我在格式localDateTime
Date dd/MM/yyyy
时遇到问题
这是我的功能:
public static Date localDateTimeToDateWithSlash(LocalDateTime localDateTime) {
if(localDateTime == null)
return null;
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
try {
return format.parse(localDateTime.format(slashDateFormater));
}
catch (Exception e) {
return null;
}
}
它会返回一个日期,但格式为2017-12-01T01:00
。
我不明白为什么。
答案 0 :(得分:3)
日期不包含特定格式;有一个默认的(可排序的)ISO格式,如2017-12-19T12:55,由toString()
调用。在这种情况下,返回一个格式正确的日期字符串。
public static String localDateTimeToDateWithSlash(LocalDateTime localDateTime) {
return DateTimeFormatter.ofPattern("dd/MM/yyyy").format(localDateTime);
}
Date和SimpleDateFormat属于" old"一代人,并且仍将在一段时间内大量使用。但是应该尽量减少它们的使用。
答案 1 :(得分:1)
由format()
执行的日期格式返回具有预期格式的字符串,但在您使用parse()
进行解析时,您会丢失格式,因为Date
并非旨在保存特定格式,因此,您在输出日期时看到的是toString()
对象的Date
表示。