我的FXML中有一个DatePicker,我需要Date将其插入我的SQL数据库。我想格式化我的Date,但它不起作用。
LocalDate localDate = purchased_at.getValue();
localDate.format(DateTimeFormatter.ofPattern("dd.mm.yyyy"));
这就是我得到的错误。
Caused by: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour
我还是个初学者。在过去的3到4个月里,我一直使用Java。我正在尽力提高。
我不得不为我的日期选择器使用字符串转换器。
public String changeformat(DatePicker date) {
date.setConverter(new StringConverter<LocalDate>() {
String pattern = "MM.yyyy";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern);
{
date.setPromptText(pattern.toLowerCase());
}
@Override
public String toString(LocalDate date) {
if (date != null) {
return dateFormatter.format(date);
} else {
return "";
}
}
@Override
public LocalDate fromString(String string) {
if (string != null && !string.isEmpty()) {
return LocalDate.parse(string, dateFormatter);
} else {
return null;
}
}
});
return null;
}
它工作得非常好。我必须使用一个参数,因为我目前使用5个日期选择器。
不要格式化插入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格式存储日期<代码>本地日期。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
有两件事错了:
不支持的字段:分钟小时
相反,您可以使用大写字母MM表示两位数的月份。
但这无济于事。有什么想法吗?
问题内容: 对于java.util.Date当我做 然后在发送JSON请求时 有用。 我应如何针对Java 8的LocalDate字段执行此操作? 我尝试过 没用 有人可以让我知道这样做的正确方法是什么。 以下是依赖项 问题答案: 我从来没有能够使用注释使它简单地工作。为了使其正常工作,我创建了一个,然后添加了(:现在改为),以及另外一个警告,那就是需要将设置为。有关更多信息,请参见模块的文档。这
为了寻求LocalDate方面的帮助,我提出了以下建议: 我需要将其作为字符串返回,但格式为:dd/mm/yyyy=29/04/1991。 我怎样才能做到这一点?
对于java.util.Date
我用Java定义了以下格式: 我的应用程序从日历中获取特定日期: 我想以的格式存储另外两个日期。给定的的和。 例如,如果是我想创建以下两个变量- 我该怎么做?
我是漏掉了什么,还是一个虫子?