gpt4 book ai didi

java - Localdate.format,格式不适用

转载 作者:行者123 更新时间:2023-11-29 04:18:56 25 4
gpt4 key购买 nike

我的 FXML 中有一个 DatePicker,我需要日期将其插入到我的 SQL 数据库中。我想格式化我的日期,但它不起作用。

    LocalDate localDate = purchased_at.getValue();
localDate.format(DateTimeFormatter.ofPattern("dd.mm.yyyy"));

这是我得到的错误。

Caused by: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour

我还是个初学者。在过去的 3 或 4 个月里,我一直在使用 Java。我正在努力改进。

最佳答案

不要格式化日期以便插入到 SQL 数据库中。假设您的数据库列的数据类型为 date 并且您至少使用 Java 8 和 JDBC 4.2,只需将 LocalDate 传递给您的 PreparedStatement原样:

    PreparedStatement insertStmt = myConnection.prepareStatement(
"insert into my_table(purchase_date) values (?)");
insertStmt.setObject(1, purchaseDate);

您的 JDBC 驱动程序会处理剩下的事情。如果使用 JPA,您的 JPA 实现也会处理它。

如果您的列是 char 类型(例如 varchar(10))并且您无法更改它,请不要为它发明您自己的格式。以 ISO 8601 格式存储日期。 LocalDate.toString() 产生这种格式。

    String formattedDate = purchaseDate.toString();
System.out.println(formattedDate);

在我的例子中输出是:

2017-11-29

顺便说一句,为了向用户展示,您也不应该发明自己的格式。而是依赖 Java 中的内置格式。例如:

    Locale turkish = Locale.forLanguageTag("tr");
DateTimeFormatter dateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)
.withLocale(turkish);
String formattedDate = purchaseDate.format(dateFormatter);
System.out.println(formattedDate);

输出:

29.11.2017

你的代码出了什么问题?

有两处错误:

  1. 您使用了小写字母 mm。这意味着小时的分钟,并且由于 LocalDate 中没有一天中的时间,它抛出了您看到的异常。您收到的消息非常准确:

Unsupported field: MinuteOfHour

相反,您可以使用大写字母 MM 表示两位数的月份。

  1. 您需要在 format 方法返回的 String 中选择格式。 LocalDate 是不可变的,因此不受方法调用的影响。它也不能有格式。这只是日历中的一个日期。

链接

关于java - Localdate.format,格式不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50462041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com