2016-09-28 12 views
0

У меня есть два поля dateTime, мне нужно получить количество дней и часов, которые истекли. Это лучшее, что я могу сделать, но теперь я получаю некоторые ошибки.Получите дни и часы между двумя датами в десятичном формате

Heres ошибка

System.TypeException: Invalid десятичное: 0.-22

Если первая дата 22/09/2016 12:30, а второй 24/09/2016 14:00 Я хотел бы, что результаты будут 2,1

public static Decimal getTimeDifference(Datetime now, Datetime endTime){ 
if(now != null && endTime != null){ 
    Long dt1Long = endTime.getTime(); 
    Long dt2Long = now.getTime(); 
    Long milliseconds = dt2Long - dt1Long; 
    Long seconds = milliseconds/1000; 
    Long minutes = seconds/60; 
    Long hours = minutes/60; 
    Long days1 = hours/24; 

    Long dt1Long2 = endTime.addDays((Integer)days1).getTime(); 
    Long dt2Long2 = now.getTime(); 
    Long milliseconds2 = dt2Long2 - dt1Long2; 
    Long seconds2 = milliseconds2/1000; 
    Long minutes2 = seconds2/60; 
    Long hours2 = minutes2/60; 
    Long days2 = hours2/24; 
    return Decimal.valueOf(days1 + '.' + hours2); 
} else { 
    return null; 
} 

}

+0

Это был дан ответ здесь .. http://salesforce.stackexchange.com/questions/5354/сут-между-два-DateTime-ценность-исключая-выходные – EricSSH

ответ

0

Если ваш первый вход теперь - 22-й, а ваш второй endDate - 24-й. Вы создаете отрицательное значение миллисекунды вычитания СВОЕГО сейчас, дата окончания

В противном случае вы можете обратиться к this Вопроса