如何比较使用JSpinner作为输入的时间?

时间:2016-11-29 09:12:27

标签: java swing date calendar jspinner

我在我的应用程序中使用了2个JSpinner控件,允许用户输入24小时时间HH:mm格式。我试图验证结束时间是否在开始时间之后。但它似乎没有按预期工作。请帮助我解决这个问题的正确方法。

我的微调器控制如下:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 24); 
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
startModel.setValue(calendar.getTime());
JSpinner spnStartTime = new JSpinner(startModel);
JSpinner.DateEditor editor = new JSpinner.DateEditor(spnStartTime, "HH:mm");
DateFormatter formatter1 =(DateFormatter)statTimeEditor.getTextField().getFormatter();        
formatter1.setAllowsInvalid(false); 
formatter1.setOverwriteMode(true);
spnStartTime.setEditor(statTimeEditor);

我也为spnEndTime做了同样的事情。

这就是我现在要做的事情:

SimpleDateFormat parser = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",Locale.ENGLISH);
Date st=parser.parse(String.valueOf(spnStartTime.getValue()));
Date en=parser.parse(spnEndTime.getValue().toString());
if(en.after(st))
{
   //do stuff
}
else
{
   //display error
}

但是spnStartTime.getValue()在1970年返回一个日期,我的编辑器设置为当前年份。所以我的日期比较不能按预期工作。

我尝试使用st.setHours(Calendar.getInstance()。getTime()。getHours());同样适用于' en'也。但getHours()现在已被弃用。那么什么是适当的解决方法呢?

1 个答案:

答案 0 :(得分:0)

calendar对象上,您只设置时间而不是日期。因此,模型上的日期保持不变:1970-01-01。还设置年,月和日。 您还可以查看How to use Spinners