java - 将 JComboBox 年、月、日整数值连接或格式化为日期类型

标签 java swing date

我已将年,月,日放在单独的JComboBoxes上,月份JComboBox有自己的渲染器来显示月份名称而不是整数值月。月份从 0 开始(0-January....11-December)

所以,我的问题是如何将年、月、日放在一起并将其分配给 Date 数据类型。

我尝试将年、月、日连接到一个String变量

int startYear = Integer.parseInt(jcmbFirstSemStartDateYear.getSelectedItem().toString() );
int startMonth = Integer.parseInt(jcmbFirstSemStartDateMonth.getSelectedItem().toString() );
int startDay = Integer.parseInt(jcmbFirstSemStartDateDay.getSelectedItem().toString() );

String startDate = startYear+"-"+startMonth+"-"+startDay; //not sure if this okay
Date completeStartDate = java.sql.Date.valueOf(startDate);
JOptionPane.showMessageDialog(null,completeStartDate);

hasConflict(completeStartDate, completeEndDate); //method to check conflict

但是当我打印 completeStartDate 的值时,它显示二月为 01。

enter image description here

我担心当我提取月份来检查冲突时,这可能会被解读为一月而不是二月。

    public static boolean hasConflict(Date aStartDate, Date aEndDate){
        boolean hasConflict = false;
        Calendar calStart = Calendar.getInstance();
        calStart.setTime(aStartDate);
        int startYear = calStart.get(Calendar.YEAR);
        int startMonth = calStart.get(Calendar.MONTH); //extract month
        int startDay = calStart.get(Calendar.DAY_OF_MONTH);
        // ... if else conditions to compare startDate with endDate
        return hasConflict;
    }

稍后,我会将这些日期存储到 mysql 数据库中。

有什么想法或建议吗?

谢谢。

最佳答案

如果可能的话,您应该使用LocalDate.of(year, month, dayOfMonth)

LocalDate date = LocalDate.of(startYear, startMonth, startDay);

您可以立即创建一个String表示形式并解析它

String dateValue = startYear + "/" + startMonth + "/" + startDay;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date data = sdf.parse(dateValue);

但是考虑到 LocalDate 的简单性,我会选择它......此外,如果您使用的是 Java 8 及更高版本,那么您不应该真正使用 java.lang. util.Date 在你可以的地方,即使你不能,我还是会考虑使用 JodaTime 而不是 java.util.Date

关于java - 将 JComboBox 年、月、日整数值连接或格式化为日期类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667856/

相关文章:

java - 在 Swing 中未按下鼠标的组件上监听鼠标释放事件

java - 多次按下排序按钮时排序表错误?

java - 如何在没有 html 的情况下向 JTextPane 添加超链接?

sql - 在 SQL Server 2008 中创建日期

mysql - 如何在mysql中将长日期格式转换为短日期格式

ios - 在 Swift 中用包含时间的字符串替换当前日期

java - hive JDBC ThriftHive$Client.sendBase

java - 在 Java 中实现拖放界面

java - 如何在测试范围内使用 m2e (Eclipse/Maven) 运行具有测试依赖项的命令行程序?

java - 统计模式(计算器 Java)