2013-08-02 2 views
0

Как сравнить два момента времени и получить от них отличные результаты. Я пытаюсь получить продолжительность между двумя разными моментами времени. Использование Date, но я получаю исключение при сравнении.Как сравнить продолжительность между двумя различными TimeStamp

Это, как я получаю TIMESTAMP 01-08-2013 06:19:35

Я получаю исключение, как java.text.ParseException: дата не поддается синтаксическому анализу: «01-08-2013 06: 19:35"

+2

Разместите код чтобы увидеть, что вы делаете. –

ответ

-1
Calendar thatDay = Calendar.getInstance(); 
    thatDay.set(Calendar.DAY_OF_MONTH,25); 
    thatDay.set(Calendar.MONTH,7); // 0-11 so 1 less 
    thatDay.set(Calendar.YEAR, 1985); 

    Calendar today = Calendar.getInstance(); //THIS IS TO GET TODAY DATE, you can simpy use your two dates 

    long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); //result in millis 

Вот приближение ...

long days = diff/(24 * 60 * 60 * 1000); 

PLUS: Чтобы Разбираем дату из строки, вы можете использовать

String strThatDay = "1985/08/25"; 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
    Date d = null; 
    try { 
    d = formatter.parse(strThatDay);//catch exception 
    } catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 


    Calendar thatDay = Calendar.getInstance(); 
    thatDay.setTime(d); //rest is the same.... 
+0

Ваш метод сравнения относится к той же проблеме, что и ответ [Sajal Dutta] (http://stackoverflow.com/a/18019271/1065197), проверьте мои комментарии. –

+0

Eugh, для этого есть класс TimeUnit. Не изобретайте велосипед. –

5

Преобразовать дату в миллисекундах, а затем вы можете использовать

long difference = finalDate.getTime() - initialDate.getTime();

Что касается вашего ParseException, есть что-то не так с синтаксический анализ для форматирования даты. Я думаю, что это правильный один "dd-MM-yyyy HH:mm:ss", если вы хотите, чтобы разобрать "01-08-2013 06:19:35"

Joda времени

В качестве альтернативы вы можете использовать Joda-Time библиотеку и найти разницу во времени в следующем виде:

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-yyyy HH:mm:ss"); 
DateTime finalDate = formatter.parse("someDate1"); 
DateTime initialDate = formatter.parse("someDate2"); 
Interval interval = new Interval(finalDate, initialDate); 
+0

Миллисекундный подход не самый лучший способ. Вместо этого просто соблюдайте подход Joda Time (не йода). –

+0

Вы можете использовать 'TimeUnit.MILLISECONDS.toXXX (разность)' для преобразования дельта в другой блок. –

+0

@LuiggiMendoza Да. Извините, фанаты звездных войн. :) –

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