我正在使用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小部件的示例,但我找不到任何从现有日期时间值设置默认值的示例。我做错了什么?
答案 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字段,如果您希望将它们归零,则第一个替代方案是您想要的。