2015-01-15 10 views
2

у меня есть строка даты:разница во времени находкой Joda между часами

Thu, 15 Jan 2015, 9:56 AM 

преобразовать его в переменную дата:

Thu Jan 15 09:56:00 GMT+05:30 2015 

с помощью:

String pattern = "EEE, d MMM yyyy, hh:mm a"; 
     try { 
      date = new SimpleDateFormat(pattern).parse(getPref("refresh", getApplicationContext())); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

Теперь у меня есть следующую функцию и передать переменную даты этой функции ниже:

public static int getDiffHour(Date first) { 
     int hoursBetween = Hours.hoursBetween(new LocalDate(first), new LocalDate()).getHours(); 
     return hoursBetween; 
    } 

Что всегда возвращает 0. В чем причина?

+0

пожалуйста, проверьте эту ссылку Http: // stacko verflow.com/questions/6897027/getting-difference-between-two-dates-android – Nithinlal

+0

http://stackoverflow.com/questions/3802893/number-of-days-between-two-dates-in-joda-time – duggu

+0

http://stackoverflow.com/questions/21285161/android-difference-between-two-dates – Nithinlal

ответ

4

попробовать, как это,

int diff_hrs = getDiffHours(date,new Date());// pass your date object as startDate and pass current date as your endDate 


public int getDiffHours(Date startDate, Date endDate){ 

    Interval interval = new Interval(startDate.getTime(), endDate.getTime()); 
    Period period = interval.toPeriod(); 
    return period.getHours(); 
} 
+0

Что делать, если endDate является текущим? Это не позволяет мне делать новый LocalDate(). GetTime. – User3

+0

вы можете столкнуться с проблемой из-за даты синтаксического анализа в другом формате, а не в формате, используемом 'LocalDate'' JodaTime'. Поэтому я бы настаивал на том, чтобы вы анализировали его, как указано в моем ответе. –

+0

Работает как шарм :) Спасибо, помощник! – User3

1

Try ниже код: -

public static void main(String[] args) { 

    String dateStart = "01/14/2012 09:29:58"; 
    String dateStop = "01/15/2012 10:31:48"; 

    //HH converts hour in 24 hours format (0-23), day calculation 
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 

    Date d1 = null; 
    Date d2 = null; 

    try { 
     d1 = format.parse(dateStart); 
     d2 = format.parse(dateStop); 

     //in milliseconds 
     long diff = d2.getTime() - d1.getTime(); 

     long diffSeconds = diff/1000 % 60; 
     long diffMinutes = diff/(60 * 1000) % 60; 
     long diffHours = diff/(60 * 60 * 1000) % 24; 
     long diffDays = diff/(24 * 60 * 60 * 1000); 

     System.out.print(diffDays + " days, "); 
     System.out.print(diffHours + " hours, "); 
     System.out.print(diffMinutes + " minutes, "); 
     System.out.print(diffSeconds + " seconds."); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

для получения дополнительной информации см ссылку ниже: -

http://www.mkyong.com/java/how-to-calculate-date-time-difference-in-java/

1
DateTimeUtils obj = new DateTimeUtils(); 
    SimpleDateFormat simpleDateFormat = 
      new SimpleDateFormat("EEE, d MMM yyyy, hh:mm a"); 

    try { 

    Date date1 = simpleDateFormat.parse("Thu Jan 15 09:56:00 GMT+05:30 2015"); 
    Date date2 = simpleDateFormat.parse("Thu Jan 16 09:56:00 GMT+05:30 2015"); 

    obj.printDifference(date1, date2); 

    } catch (ParseException e) { 
    e.printStackTrace(); 
    } 

} 

//1 minute = 60 seconds 
//1 hour = 60 x 60 = 3600 
//1 day = 3600 x 24 = 86400 
public void printDifference(Date startDate, Date endDate){ 

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

    System.out.println("startDate : " + startDate); 
    System.out.println("endDate : "+ endDate); 
    System.out.println("different : " + different); 

    long secondsInMilli = 1000; 
    long minutesInMilli = secondsInMilli * 60; 
    long hoursInMilli = minutesInMilli * 60; 
    long daysInMilli = hoursInMilli * 24; 

    long elapsedDays = different/daysInMilli; 
    different = different % daysInMilli; 

    long elapsedHours = different/hoursInMilli; 
    different = different % hoursInMilli; 

    long elapsedMinutes = different/minutesInMilli; 
    different = different % minutesInMilli; 

    long elapsedSeconds = different/secondsInMilli; 

    System.out.printf(
     "%d days, %d hours, %d minutes, %d seconds%n", 
     elapsedDays, 
     elapsedHours, elapsedMinutes, elapsedSeconds); 

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