gpt4 book ai didi

java - 从日期字段中删除时间值并在从数据库获取数据时更改格式

转载 作者:行者123 更新时间:2023-11-29 10:49:43 25 4
gpt4 key购买 nike

我的程序从 Access 数据库中获取几列并在 JTable 中显示数据。它工作正常,但我需要在数据显示时进行一些更改。例如,尽管Access数据库中数据以dd-MM-yyyy的形式存储,但在检索时却以yyyy-MM-dd tt:tt:tt格式显示。我需要在表格中以dd-MM-yyyy的形式显示。该日期字段在表的第一列中表示为 for_date

sql = "Select for_date as FOR_DATE,outage_time as OUTAGE_TIME,stat_detail as STATION_DETAILS from " + table_sel + " where for_date='" + date1 + "' and stat_detail ='" + combo_sel + "'";
Connection con = null;
Statement st = null;
ResultSet rs = null;
PreparedStatement pst = null;
String dbURL = "jdbc:ucanaccess://C:\\Users\\Dell_PC\\Documents\\SYSTEM_OUTAGE_REPORT.accdb";
con = DriverManager.getConnection(dbURL);
st = con.createStatement();
pst = con.prepareStatement(sql);
rs = pst.executeQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
con.close();

最佳答案

我在这里有点含糊,因为我没有使用 UCanAccess JDBC 驱动程序的经验。据我了解,你正在使用这个。然而,我相信,只要没有人提到解决这一任务的现代方法,这条答案就不完整。现代方法包括最大限度地减少过时的类 Date 的使用,如果可以的话完全删除它,并使用 java.time.LocalDate 代替。

因此第一步是检查新版本的 UCanAccess 是否符合 JDBC 4.2。如果是这样,它可以直接为您提供一个 LocalDate 对象,而不是一个 Date 对象。所以我读过。如果这不是一个选项,那么在获取 Date 后的第一件事就是使用 yourDate.toLocalDate() 进行转换。这应该是您的 DbUtils.resultSetToTableModel() 的工作。不过我不确定这是你自己修改的方法还是某个标准库中的方法。

有了LocalDate,我们就快到了。这将默认显示为yyyy-MM-dd。您想要相反的方式,dd-MM-yyyy。为此,我倾向于同意 Robin 和 camickr 的观点,即您应该使用表格渲染器。你的渲染器应该使用

private static final DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("dd-MM-uuuu");

要格式化您的LocalDate,就可以了

yourLocalDate.format(dateFormatter);

或者如果您还没有机会转换日期,那么当然

yourDate.toLocalDate().format(dateFormatter);

关于java - 从日期字段中删除时间值并在从数据库获取数据时更改格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43953982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com