从JSpinner获取实际日期

时间:2017-03-14 13:44:36

标签: java jspinner

我使用JSpinner设置时间(小时和分钟,模式为“HH:mm”)。

我按如下方式初始化JSpinner:

JSpinner spinner = new JSpinner();
spinner.setModel(new SpinnerDateModel());
JSpinner.DateEditor timeEditor = new JSpinner.DateEditor(spinner, "HH:mm");
spinner.setEditor(timeEditor);
spinner.setValue(new Date());

当我得到价值时

(Date) spinner.getValue()

不改变值 - 我得到正确的值Tue Mar 14 14:46:41 CET 2017,但是当我改变一分钟时它将“epoche”日期作为Thu Jan 01 14:45:00 CET 1970返回。 “Epoche”日期表示时间(小时和分钟)可以,但日期年,月或日是错误的。

如何初始化JSpinner以始终按spinner.getValue()获取实际日期? - 不是epoche日期

修改

我找到了解决方案如下

Date spinnerValue = (Date) spinner.getValue();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MMM/dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
Date actualDate = sdf2.parse(sdf1.format(new Date()) + " " + sdf.format(spinnerValue), new ParsePosition(0));

......它看起来不太好,我想把它写得更小更聪明。

1 个答案:

答案 0 :(得分:0)

设定值和可能值的范围不受约束。

Set step for a DateEditor in a JSpinner

你必须定义微调器的最小值和最大值,因此微调器知道spinner-tick指向的是什么以及进入下一个tick时剩余多少时间。

第一个getValue命令将返回之前设置的Date(),它由您自己初始化。

DateEditor会生成更多值,这个值也必须由您自己初始化。如果不是,您将从此DateEditor获取默认值。