有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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中显示它们更好吗


共 (3) 个答案

  1. # 1 楼答案

    ^{}不存储时间组件

    很可能您需要^{},在这种情况下您可以尝试

    LocalDateTime l = LocalDateTime.ofEpochSeconds(t.getTime() / 1000)
    

    EDIT:例如,ofEpochSeconds中的@Ole-v-v注释需要另外两个参数

    LocalDateTime l = LocalDateTime.ofEpochSeconds(t.getTime() / 1000,0, ZoneOffet.UTC);
    
  2. # 2 楼答案

    ALocalDate是一个没有时间(小时)的日期。你可以把它想象成年、月、月、日。如果您也需要存储小时数,则会想到两个选项:

    • 标准解决方案是在数据库中存储时间戳,并在Java中使用Instant。然后,当需要在某个时区向用户显示时,将Instant转换为ZonedDateTime
    • 或者,您可以在Java中使用LocalDateTime

    在这两种情况下,都不需要java.sql.Datejava.sql.Timestamp。有了一个足够新的JDBC驱动程序(我认为是从Connector/J version 5.1.37左右),您可以直接将LocalDateLocalDateTimeInstantZonedDateTime存储到数据库中,并再次以相同的类型检索它们。如果您确实坚持使用过时的java.sql类型,那么您需要一个Timestamp,因为java.sql.Date也不能处理一天中的小时数

    免责声明:这都是我读过的东西,不是我在实践中尝试过的东西

  3. # 3 楼答案

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

    希望有帮助