Java 将(“月-日-小时”赋值给LocalDate变量
在多次尝试之后,我没有找到一种方法将从sql中获取的日期以(“MM dd hh”)的模式分配给Java 将(“月-日-小时”赋值给LocalDate变量,java,mysql,localdate,Java,Mysql,Localdate,在多次尝试之后,我没有找到一种方法将从sql中获取的日期以(“MM dd hh”)的模式分配给LocalDate变量。我已经定义了一个时间戳字段(从年到秒),我需要设置一个预旋转小时、天和月。你有什么建议 public class Prenot { private LocalDate date; private Date datesql; public Prenot(LocalDate date) { this.date = date; }
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);
}
}
}
公共类Prenot{
私有本地日期;
私有日期SQL;
public Prenot(本地日期){
this.date=日期;
}
公共LocalDate getDate(){
返回此日期;
}
公共无效设置日期(LocalDate){
this.date=日期;
}
公共静态无效(连接控制,
可观察列表){
试一试{
Connessione connn=新Connessione();
FXMLDocumentController prova=新的FXMLDocumentController();
connn.estabilishConn(prova.getUser(),prova.getPass());
语句stmt=con.createStatement();
结果集rs=stmt.executeQuery(“从prenotazione中选择*);
while(rs.next()){
列表。添加(新Prenot)(
rs.getDate(“数据”).toLocalDate();
}
}捕获(SQLE异常){
e、 printStackTrace();
系统输出打印ln(e);
}
}
}
编辑:我把代码的重点放在需求上,
现在,如果我放弃java.sql.Date,从mysql数据库中获取时间戳值,您有什么建议?如果是这样,您认为将天和小时放入另一个不同的getter并在TableView中显示它们更好吗?不存储时间组件
很可能您需要,在这种情况下,您可以尝试
LocalDateTime l = LocalDateTime.ofEpochSeconds(t.getTime() / 1000)
EDIT:例如,ofEpochSeconds
中的@Ole-v-v注释需要另外两个参数
LocalDateTime l = LocalDateTime.ofEpochSeconds(t.getTime() / 1000,0, ZoneOffet.UTC);
希望对您有所帮助!!!A
LocalDate
是一个没有时间(小时)的日期。您可以将其视为年、月和月。如果您也需要存储小时,请考虑两个选项:
- 标准的解决方案是在数据库中存储时间戳,并在Java中使用
。然后,当需要在某个时区向用户显示时,将即时
转换为即时
分区日期时间
- 或者,您可以在Java中使用
LocalDateTime
java.sql.Date
或java.sql.Timestamp
。它具有足够新的JDBC驱动程序(我认为是从Connector/J版本5.1.37左右)您可以直接将LocalDate
、LocalDateTime
、Instant
或ZonedDateTime
存储到数据库中,然后再次以相同的类型检索它们。如果您真的坚持使用过时的java.sql
类型,则需要时间戳,因为java.sql.Date
无法处理今天的乌尔也不例外
免责声明:这都是我读过的东西,而不是我自己在实践中尝试过的东西。您到底遇到了什么问题?到目前为止您尝试了什么?以MM dd hh
格式存储日期的字段的数据类型是什么?(a)什么是“prenotation”?(b)我们希望您尽量减少堆栈溢出的代码示例,以演示您的核心问题,而不是剪切和粘贴生产代码供我们浏览。请参阅。(c)日期时间对象包含数据/信息,而不是字符串,因此没有“格式”。已经讨论过数百(数千?)已在堆栈溢出上发布的现有问题和答案的个数。在发布之前,请彻底搜索此网站。对于处理整个类,我很抱歉,我想清楚代码。但是,我尝试了如下e getter:public LocalDate getDate(){很抱歉处理了整个类,我想弄清楚代码。但是,如果我放弃java.sql.Date,从mysql数据库中获取时间戳值,您有什么建议?如果是,您认为最好将时间戳值放入另一个不同的getter,days和hours,并在TableView中显示它们?(我承认更正,因此删除了我之前的评论。)
LocalDateTime now = LocalDateTime.now();
System.out.println("Before : " + now);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatDateTime = now.format(formatter);
System.out.println("After : " + formatDateTime);