Как установить значение виджета DateTime

66
5

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

спросил(а) 2020-04-04T00:21:08+03:00 3 месяца назад
1
Решение
77

Вы неправильно используете Календарь, вам нужно что-то вроде:


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(). См. Календарь javadoc

ответил(а) 2020-04-04T00:38:16.903532+03:00 3 месяца назад
55

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


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


?


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

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


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


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

ответил(а) 2020-04-04T00:21:08+03:00 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема