代码之家  ›  专栏  ›  技术社区  ›  RolloBallo

将(“月-日-小时”)分配给LocalDate变量

  •  -2
  • RolloBallo  · 技术社区  · 7 年前

    经过多次尝试,我没有找到一种方法将从sql中获取的日期分配给 LocalDate 模式为(“MM-dd-hh”)的变量。我定义了一个时间戳字段(从年到秒),我需要设置一个预旋转小时、天和月。你有什么建议?

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

    3 回复  |  直到 7 年前
        1
  •  2
  •   Anonymous    7 年前

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

    • Instant 在Java中。然后转换 瞬间 ZonedDateTime 当您需要在某个时区向用户显示它时。
    • 或者,您可以使用 LocalDateTime

    在任何一种情况下,都不需要 java.sql.Date java.sql.Timestamp .有了一个足够新的JDBC驱动程序(我认为是从Connector/J版本5.1.37左右),您可以直接存储 , , 瞬间 并再次以相同类型检索它们。如果你真的坚持使用过时的 java.sql Timestamp 自a java.sql.Date 也不处理一天中的小时。

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

        2
  •  0
  •   priya raj    7 年前
    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);
    

        3
  •  0
  •   agnul    7 年前

    LocalDate 不存储时间组件。

    很可能你需要 LocalDateTime

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

    编辑 :作为中的Ole-v-v注释 comment below , ofEpochSeconds

    LocalDateTime l = LocalDateTime.ofEpochSeconds(t.getTime() / 1000,0, ZoneOffet.UTC);