【问题标题】:How to compare time taken as input using JSpinner?如何使用 JSpinner 比较输入时间?
【发布时间】: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 exampleShort, Self Contained, Correct Example
  • 简而言之,我如何比较从 2 个 JSpinner 控件作为用户输入获得的 (HH:mm) 时间值?以及如何从 Date 对象中仅检索小时和分钟部分。在这些方面的任何帮助对我来说都很有价值。
  • 上次我发布了一个不同的问题,人们评论说如果有人可以帮助我,我应该发布更详细的代码。所以这次我发布了详细信息,我只看到了反对票。我到底应该发布什么?!!!
  • “我到底应该发什么?!!!” 前两个链接到底是什么让你仔细看了不明白? “上次我发布了一个不同的问题” 不准备评论您未链接到的其他问题。事实上,所有相关的都在这里。

标签: java swing date calendar jspinner


【解决方案1】:

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

【讨论】:

  • 据我了解,当我调用 calender=Calendar.getInstance();它会将当前日期和时间设置为日历。不是这样吗?此外,当我尝试打印 calender.getTime() 的值时,它给了我当前的年份和月份。
猜你喜欢
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多