2 回答
TA贡献1874条经验 获得超12个赞
这取决于你想达到什么目的?
如果结果是包含小时、分钟和秒的日期,则 DateFormatter 比 DateTimeFormatter 更合适
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(date, formatter);
或者
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalTimeDate localDateWithTime = LocalTimeDate.parse(date, formatter);
生成该错误是因为您想要生成一个不带(小时、分钟等)的日期,而使用DateTimeFormatteraLocalDate而不是LocalTimeDate您的模式格式的正确类型。
注意:您不必强制转换CharSequence为String
编辑 2:
如果您要在日期选择器中输入的日期是 2019-08-28,模式应该是yyyy-MM-dd而不是。MM-dd-yyyy
这里的 JUnit 测试证明我在说什么:
@Test
public void testDate() {
String date = "2019-08-30 12:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localTimeDate = LocalDateTime.parse(date, formatter);
assertTrue(localTimeDate.toString().equals(date));
}
@Test
public void testDateWithoutTime() {
String date = "2019-08-30";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(date, formatter);
assertTrue(localDate.toString().equals(date));
}
TA贡献1865条经验 获得超7个赞
您的模式不包含相关时间信息。你也需要包括它。
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(stringDate);
添加回答
举报