2012-02-22 2 views
2

Я использую Eclipse для написания приложения Java. Мое приложение включает виджет DateTime (org.eclipse.swt.widgets.datetime). Я не могу определить правильный способ присвоить значение по умолчанию. У меня значение DateTime 2/1/2012. Я использую объект Calendar, чтобы попытаться установить значение по умолчанию, и я думаю, что я просто не совсем понимаю, как это работает.Как установить значение виджета DateTime

Я попытался

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, но я не могу найти примеров установки значения по умолчанию из существующего значения datetime. Что я делаю не так?

ответ

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

+0

Спасибо, это был ответ, который я искал. – Robbert

1

Умм ... Я думаю, вы этого не хотите. Не должно быть:

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

?

И да, люди, календарные месяцы Java основаны на 0! (Но дни основаны на 1, поэтому для согласованности.) API Eclipse, похоже, соответствует этому немного идиотизму, но, вероятно, это имеет смысл в этом случае.

Но на самом деле, то, что вы на самом деле, вероятно, хотите просто:

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

Обратите внимание, что будет включать в себя HH: MM: SS: поля ММ, и если вы предпочитаете те, которые будут обнулены первый вариант это тот, который вы хотите.

Смежные вопросы