我在我的应用程序中使用了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()现在已被弃用。那么什么是适当的解决方法呢?
答案 0 :(得分:0)
在calendar
对象上,您只设置时间而不是日期。因此,模型上的日期保持不变:1970-01-01。还设置年,月和日。
您还可以查看How to use Spinners。