如何设置DateTime小组件的值

时间:2012-02-22 06:47:16

标签: java eclipse

我正在使用Eclipse编写一个java应用程序。我的应用程序包括一个DateTime小部件(org.eclipse.swt.widgets.datetime)。我无法弄清楚分配默认值的正确方法。我的DateTime值为2/1/2012。我正在使用Calendar对象尝试设置默认值,我想我只是不完全理解它是如何工作的。

我试过

Calendar.getInstance().setTime(startDate);
StartDateWidget.setDate(Calendar.YEAR, Calendar.MONTH,Calendar.DATE);

这只显示当前日期。

我已经尝试了

Calendar startCal = Calendar.getInstance();
startCal.setTime(startDate);
StartDateWidget.setDate(startCal.YEAR, startCal.MONTH, startCal.DATE);

这表明Eclipse中有关使用静态访问器的错误,当我运行应用程序时,日期显示为3/5/2012。

我已经通过互联网查看并查看了大量使用DateTime小部件的示例,但我找不到任何从现有日期时间值设置默认值的示例。我做错了什么?

2 个答案:

答案 0 :(得分:3)

您使用的日历不正确,您需要以下内容:

Calendar startCal = Calendar.getInstance();
startDateWidget.setDate(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH)-1, startCal.get(Calendar.DAY_OF_MONTH));

并且类似的时间。

Calendar.YEAR只是一个符号值,您可以将其移至get()set()。请参阅Calendar javadoc

答案 1 :(得分:1)

嗯......我想你不想那样。不应该是:

Calendar startCal = Calendar.getInstance(); startDateWidget.setDate(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH), startCal.get(DAY_OF_MONTH));

是的人,Java Calendar月份是0基础! (但是这些日子基于1,对于一致性而言非常重要。)Eclipse API似乎与这一点愚蠢相匹配,但在这种情况下可能是有意义的。

但实际上,你真正想要的只是:

Calendar startCal = Calendar.getInstance(); startDateWidget.setTime(startCal.getTime());

注意,这将包括HH:MM:SS:MM字段,如果您希望将它们归零,则第一个替代方案是您想要的。