java将(“MonthDayShours”)赋值给LocalDate变量
在多次尝试之后,我没有找到一种方法,以(“MM-dd-hh”)的模式将从sql获取的日期分配给LocalDate
变量。我已经定义了一个时间戳字段(从年到秒),我需要设置一个预旋转小时、天和月。你有什么建议
public class Prenot {
private LocalDate date;
private Date datesql;
public Prenot(LocalDate date) {
this.date = date;
}
public LocalDate getDate() {
return this.date;
}
public void setDate(LocalDate date) {
this.date = date;
}
public static void visualizePrenot(Connection con,
ObservableList<Prenot> list) {
try {
Connessione connn = new Connessione();
FXMLDocumentController prova = new FXMLDocumentController();
connn.estabilishConn(prova.getUser(), prova.getPass());
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM prenotazione");
while (rs.next()) {
list.add(new Prenot(
rs.getDate("data").toLocalDate());
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println(e);
}
}
}
编辑:我把代码的重点放在需求上, 如果我放弃java,你有什么建议。sql。日期,从mysql数据库获取时间戳值?如果是这样的话,你认为进入另一个不同的getter,几天和几小时并在TableView中显示它们更好吗
# 1 楼答案
^{} 不存储时间组件
很可能您需要^{} ,在这种情况下您可以尝试
EDIT:例如,
ofEpochSeconds
中的@Ole-v-v注释需要另外两个参数# 2 楼答案
A
LocalDate
是一个没有时间(小时)的日期。你可以把它想象成年、月、月、日。如果您也需要存储小时数,则会想到两个选项:Instant
。然后,当需要在某个时区向用户显示时,将Instant
转换为ZonedDateTime
李>LocalDateTime
李>在这两种情况下,都不需要
java.sql.Date
或java.sql.Timestamp
。有了一个足够新的JDBC驱动程序(我认为是从Connector/J version 5.1.37左右),您可以直接将LocalDate
、LocalDateTime
、Instant
或ZonedDateTime
存储到数据库中,并再次以相同的类型检索它们。如果您确实坚持使用过时的java.sql
类型,那么您需要一个Timestamp
,因为java.sql.Date
也不能处理一天中的小时数免责声明:这都是我读过的东西,不是我在实践中尝试过的东西
# 3 楼答案
希望有帮助