2015-04-17 1 views
1

Это мои коды, но это не работает.Вычислить разницу между двумя значениями JDateChooser

Start.getDate(); 
    End.getDate(); 
    int diffInDays = (int)((Start.getDate() - End.getDate())/(1000 * 60 * 60 * 24)); 
    System.out.println(diffInDays); 

Так как я могу сделать программу, чтобы пользователь мог просмотреть разницу между 2 JDateChooser.

+0

Почему это не работает? –

+0

система указала на плохие типы операндов для двоичного оператора '-' –

ответ

4

Расчет даты/времени - сложный вопрос, который, как правило, лучше всего решается с помощью специальной библиотеки для решения.

Java 8

Instant start = Start.getDate().toInstance(); 
Instant end = End.getDate().getInstance(); 

Duration duration = Duration.between(start, end); 

Joda времени

Если вы не можете использовать Java 8, то вы должны использовать Joda-Time вместо

DateTime start = new DateTime(Start.geDate().getTime()); 
DateTime end = new DateTime(End.geDate().getTime()); 

// You might need to use end, start instead, depending on which 
// is later 
Duration duration = new Duration(start, end); 
Period period = duration.toPeriod(); 

Вы можете посмотреть на этой answer чтобы узнать, как вы можете отформатировать значение

+0

hi Mad, как я могу использовать Java 8? жаль, что я был новичком. –

+0

это библиотека для netbeans или что? –

+0

Java 1.8 - это текущая версия Java. Все IDE могут воспользоваться этим. – MadProgrammer

1

Try получать раз в миллисекундах и сравнивая их:

Date startDate = Start.getDate(); 
Date endDate = End.getDate(); 

// In milliseconds 
long difference = endDate.getTime() - startDate.getTime(); 

int diffInDays = (int)(difference/1000/60/60/24); 

Перед тем, как были вычитая Date объекты, которые не являются числами. Вы хотите сравнить свое время, которое является числом.

Чтобы проверить, если JDateChooser равна нулю, просто сделать:

if (Start == null) { 
    // code 
} 

или

if (Start != null) { 
    // code 
} 

Отказ от ответственности:

Вы никогда не должны вычитать два миллисекунды друг от друга, есть просто для многих правил, которые не учитываются (високосные годы, прыжки секунд, границы века, летние сбережения) чтобы сделать его даже отдаленно точным. Вы должны либо использовать API-интерфейс Java 8, либо JodaTi e (oh и дни не всегда 24 часа). - MadProgrammer.

Это быстрое и грязное решение, но есть много слабых случаев. Будьте осторожны.

+0

СПАСИБО ВАМ ТАК. –

+0

Добро пожаловать! Рад, что смог помочь. –

+0

Кстати, как я могу узнать, является ли 2 jdatechooser нулевым? Можете ли вы дать мне другой код? –