【发布时间】:2016-11-29 09:12:26
【问题描述】:
我在我的应用程序中使用了 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() 现在已被弃用。那么什么是合适的解决方法呢?
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖minimal reproducible example 或Short, Self Contained, Correct Example。
-
简而言之,我如何比较从 2 个 JSpinner 控件作为用户输入获得的 (HH:mm) 时间值?以及如何从 Date 对象中仅检索小时和分钟部分。在这些方面的任何帮助对我来说都很有价值。
-
上次我发布了一个不同的问题,人们评论说如果有人可以帮助我,我应该发布更详细的代码。所以这次我发布了详细信息,我只看到了反对票。我到底应该发布什么?!!!
-
“我到底应该发什么?!!!” 前两个链接到底是什么让你仔细看了不明白? “上次我发布了一个不同的问题” 不准备评论您未链接到的其他问题。事实上,所有相关的都在这里。
标签: java swing date calendar jspinner