我目前正在使用JSpinner设置时间值,然后将其作为varchar更新到我的数据库中,例如上午12:00:00。但是,我想以另一种形式检索这次添加到我的数据库中的更新表单中的JSpinner。更新表格供用户更新他们之前选择的时间(例如,如上所述的12:00:00 AM)。现在,默认时间值为当前时间。我尝试使用.setValue()方法,但是它是非法值,因为我的检索时间是一个字符串。这是我的代码,可以使事情更清楚:

shiftTime = new JSpinner(new SpinnerDateModel());
    JSpinner.DateEditor de_shiftTime = new JSpinner.DateEditor(shiftTime,
            "hh:mm:ss a");
    shiftTime.setEditor(de_shiftTime);
    shiftTime.setSize(108, 22);
    shiftTime.setLocation(436, 478);
    add(shiftTime);
    shiftTime.setValue(a.getVolDutyShift());


.getVolDutyShift()方法返回一个字符串(字符串格式为12:00:00 AM)
我的对象是调用.getVolDutyShift()方法的对象。
我应如何解析此a.getVolDutyShift(),以便JSpinner将时间加载为数据库中的时间(上午12:00:00)?

最佳答案

试试看它将您的时间以字符串形式转换为java.sql.Time。

    SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss a");
    java.util.Date d =(java.util.Date)format.parse(a.getVolDutyShift());
    java.sql.Time time = new java.sql.Time(d.getTime());
    shiftTime.setValue(time );


但是,您应始终将日期和时间保存为数据库中原始数据类型,而不要保存为varchar

10-04 17:21