【问题标题】:Get actual date from JSpinner从 JSpinner 获取实际日期
【发布时间】:2017-03-14 13:44:35
【问题描述】:

我使用 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,但是当我向下更改一分钟时,它将“纪元”日期返回为 Thu Jan 01 14:45:00 CET 1970。 “纪元”日期表示时间(小时和分钟)可以,但日期年、月或日是错误的。

如何初始化 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));

...不好看,我想写得更小更聪明。

【问题讨论】:

  • 不。我问如何从 JSpinner 获取完整日期(实际日期)

标签: java jspinner


【解决方案1】:

设定值和可能值的范围没有限制。

Set step for a DateEditor in a JSpinner

您必须定义微调器的最小值和最大值,以便微调器知道微调器刻度指向的内容以及进入下一个刻度时还剩多少时间。

第一个getValue命令会返回之前设置的Date(),是自己初始化的。

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

【讨论】:

  • 那么如何通过从微调器获取更改值来获得正确的(实际)日期?
  • 选择最小值时微调器指向的日期(左)?今天,昨天,1970 年?并且是改变小时、分钟、年、毫秒的滴答声......
  • 按照模式定义,我只更改了小时和分钟。但我需要得到只有小时和分钟改变的完整日期。我编辑我的帖子,检查我想要实现的目标。
猜你喜欢
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多