如何用JXDatepicker仅选日期及提取SQL查询返回的日期部分
嘿,针对你的两个问题,我整理了实用的解决方案,都是日常开发里常用的技巧:
问题1:如何使用JXDatepicker仅选择日期?
JXDatePicker(SwingX组件)默认可能会显示时间部分,但通过简单配置就能让它只处理日期:
- 设置日期格式:指定只包含日期的显示格式,比如你需要的
Jan 31 2018样式 - 可选:限制输入方式:禁用编辑器的手动输入,强制用户通过下拉日历选择,避免误输入时间
下面是完整的代码示例:
import org.jdesktop.swingx.JXDatePicker; import java.text.SimpleDateFormat; // 初始化日期选择器 JXDatePicker datePicker = new JXDatePicker(); // 设置仅显示日期的格式(匹配你需要的"Jan 31 2018"样式) SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy"); datePicker.setFormats(dateFormat); // 可选:禁用编辑器手动输入,确保用户只能通过日历选择日期 datePicker.getEditor().setEditable(false);
这样配置后,选择器会只展示日期部分,返回的Date对象虽然仍包含时间(默认00:00:00),但完全不影响日期的使用;如果需要输出字符串,直接用上面的dateFormat.format()方法即可。
问题2:SQL查询日期后提取指定格式的日期部分
你遇到的带时区的完整日期字符串,有两种处理方式,看你更倾向于在SQL层面还是应用层面解决:
方式1:在SQL层面直接格式化
不同数据库的日期格式化函数略有差异,这里给几个主流数据库的写法:
- MySQL:使用
DATE_FORMAT函数SELECT DATE_FORMAT(your_date_column, '%b %d %Y') AS formatted_date FROM your_table; - Oracle:使用
TO_CHAR函数SELECT TO_CHAR(your_date_column, 'Mon DD YYYY') AS formatted_date FROM your_table; - SQL Server:使用
CONVERT函数(格式码107对应Mon DD YYYY)SELECT CONVERT(VARCHAR, your_date_column, 107) AS formatted_date FROM your_table;
方式2:在应用层面(Java)格式化
如果已经从数据库拿到了Date对象,直接用SimpleDateFormat处理即可,还能灵活控制时区:
import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; // 从ResultSet获取的日期对象 Date sqlReturnedDate = resultSet.getDate("your_date_column"); // 创建格式化器,匹配目标格式 SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy"); // 可选:设置时区,和原日期的GMT+01:00保持一致 sdf.setTimeZone(TimeZone.getTimeZone("GMT+01:00")); // 格式化得到目标字符串 String targetDateStr = sdf.format(sqlReturnedDate); // 输出结果:Jan 31 2018
内容的提问来源于stack exchange,提问作者salim abbad
相关产品推荐
相关产品推荐

