如何从字符串中设置JSpinner的值?

时间:2014-08-03 13:56:32

标签: java swing jspinner

我目前正在使用JSpinner设置一个时间值,然后将其作为varchar更新到我的数据库,例如凌晨00: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) a是我的对象,它调用.getVolDutyShift()方法。 我应该如何解析这个a.getVolDutyShift(),以便JSpinner将时间加载到我的数据库中(12:00:00 AM)?

2 个答案:

答案 0 :(得分:1)

试一试。它会将您在字符串中的时间转换为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

答案 1 :(得分:0)

我总是遇到解析问题。我找到了另一种方法,可以在不解析的情况下解决您的问题......

JSpinner.DateEditor de = new JSpinner.DateEditor(shiftTime, a.getVolDutyShift());
jSpinner1.setEditor(de);