2016-11-29 127 views
-1

我在我的应用程序中使用了2个JSpinner控件,允许用户输入24小时制HH:mm格式。我试图验证开始时间之后是否结束时间。但它似乎没有按预期工作。请帮助我什么是正确的方式来做到这一点。如何比较使用JSpinner输入的时间?

我的微调控制是这样的:

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

为了更快得到更好的帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 –

+0

在较短的笔记中,我如何比较从2个JSpinner控件获取的(HH:mm)时间值作为用户输入?我如何从Date对象中检索小时和分钟部分。任何关于这些的帮助对我来说都是很有价值的。 – developer3

+0

上次我发布了一个不同的问题,人们评论说,如果有人应该帮助我,我应该发布更详细的代码。所以这次我发布了细节,我只看到了降价。我应该发布什么?!!! – developer3

回答

0

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

+0

从我的理解,当我调用calender = Calendar.getInstance();它会将当前日期和时间设置为日历。不是吗?另外,当我尝试打印calender.getTime()的值时,它会给我当前的年份和月份。 – developer3