You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:09:16