为了账号安全,请及时绑定邮箱和手机立即绑定

如何将日期时间数据字符串转换为 LocalDate?

如何将日期时间数据字符串转换为 LocalDate?

鸿蒙传说 2023-06-21 16:04:45
我有一个日期时间信息字符串,我正在尝试将其转换为 LocalDate 字段。字符串的内容是“2019-08-28 09:00:00”。我正在尝试获取 MM/dd/yyyy LocalDate 值以加载到 JavaFX DatePicker 字段中。我努力了Date date = new SimpleDateFormat("MM/dd/yyyy").parse(stringDate);和DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); LocalDate localDate = LocalDate.parse((CharSequence) date, formatter);两者都返回了错误。选项#2返回的错误如下:Caused by: java.time.format.DateTimeParseException: Text '2019-08-30 12:00:00' could not be parsed at index 2     at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)     at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)     at java.time.LocalDate.parse(LocalDate.java:400)     at utils.DateTimeConverter.convertStringDateToLocalDate(DateTimeConverter.java:27)
查看完整描述

2 回答

?
HUWWW

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));

}


查看完整回答
反对 回复 2023-06-21
?
莫回无

TA贡献1865条经验 获得超7个赞

您的模式不包含相关时间信息。你也需要包括它。

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(stringDate);


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信