2012-05-01 6 views
2

Я новичок в программировании на Java, используя Netbeans. Я добавил jCalendar в свой графический интерфейс, чтобы выбрать дату.Выбор даты и поиска

Я вошел в эту линию в Events -> «изменить свойство» код кнопки jCalendar,

Date date=jcalendar1.getDate(); 

Так что я получаю дату сразу, когда она изменяется. Я прав?

Цель: Я хочу найти разницу в миллисекундах с полудня (12:00 вечера) этой даты выше до СЕЙЧАС (текущая дата и время). Есть несколько программ, показывающих разницу в дате, но у всех есть даты, жестко закодированные и являющиеся новичком, я не знаю, как заменить его на выбранную дату. (также меня путают между объектами Date и Calendar, неспособными понять разницу между ними). Например, кусок отсюда:

http://www.java2s.com/Code/Java/Data-type/ReturnsaDatesetjusttoNoontotheclosestpossiblemillisecondoftheday.htm

if (day == null) day = new Date(); 
    cal.setTime(day); 
    cal.set(Calendar.HOUR_OF_DAY, 12); 
    cal.set(Calendar.MINUTE,  cal.getMinimum(Calendar.MINUTE)); 
    cal.set(Calendar.SECOND,  cal.getMinimum(Calendar.SECOND)); 
    cal.set(Calendar.MILLISECOND, cal.getMinimum(Calendar.MILLISECOND)); 
    return cal.getTime(); 

Здесь день является дата объекта. Как привязано к нему cal (объект календаря), чтобы ввести время. Как должен сначала определить объект cal? Как я могу использовать это или что-то еще, по вашему мнению, для моей программы. Кусок кода с подробными комментариями будет полезнее спасибо!

ответ

0

Вместо использования:

Date day = new Date(); 

Использование:

Calendar cal = Calendar.getInstance(); 
cal.set (...); 
Date date = new Date(cal.getTimeInMillis()); 

Worth абстрагирования этот материал к классу DateUtils или подобным, с чем-то вроде следующего:

public static Date create(int year, int month, int day, int hour, int minute, int second) { 
    return new Date(getTimeInMillis(year, month, day, hour, minute, second)); 
} 

public static long getTimeInMillis(int year, int month, int day, int hour, int minute, int second, int milliseconds) { 
    Calendar cal = Calendar.getInstance(); 

    cal.clear(); 
    cal.set(year, month, day, hour, minute, second); 
    cal.set(Calendar.MILLISECOND, milliseconds); 

    return cal.getTimeInMillis(); 
} 
+0

спасибо, я должен взять дату из GUI, могу ли я использовать calendar.getInstance(); для этого вместо Date date = jcalendar1.getDate(); как указано в моем вопросе. –

+0

API jcalendar -http: //www.toedter.com/en/jcalendar/api/com/toedter/calendar/JCalendar.html - указывает, что объект java.util.Date будет возвращен из метода getDate(). Метод getTime() на java.util.Date дает вам представление этой даты в миллисекундах. Используйте это с кодом в своем ответе, чтобы получить разницу в миллисекундах между графическим интерфейсом и сегодня в полдень. – PaddyC

+0

Извините, я не слишком часто комментировал здесь, я быстро попал в систему, но мой комментарий выше отвечает на ваш вопрос? – PaddyC

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