Как правильно выполнить сложение TDateTime
Имеется следующая проблема:
переменная TDateTime TimeOfDay; // хранит в себе время (рабочее время на предприятии) типа hh:mm:ss
Таких переменных 30;
Как произвести сложение таких переменных и записать их в переменную SumTime например (время за месяц)
SumTime=TimeOfDay1+TimeOfDay2+TimeOfDay3...?
Простое сложение тут работает некорректно (работает пока сума не достигнет 24 часа потом в сумме появляются дни , а мне нужно чтобы все было в часах и минутах да секундах)
TDateTime по сути число с плавающей точкой двойной точности, начиная с 1899 года вроде бы, где единица - один день (то есть 1 час равен 1/24 и так далее.) Фактичеси тебе нужна дробная часть. Дальше догадаешься сам, надеюсь.
я получаю ответ в форме dd:hh:mm:ss как дни сместить в часы и получить переменную в часах минутах и секундах.
например можно так нагавнякать:
Код:
int msecs,seconds,hours,minutes,year,month,days;
SumTime.DecodeTime(&hours,&minutes,&seconds,&msecs);
SumTime.DecodeDate(&year,&month,&days);
hours+=days*24;
String a="";
a.printf("%d:%d:%d",hours,minutes,seconds);
ShowMessage(a);
SumTime.DecodeTime(&hours,&minutes,&seconds,&msecs);
SumTime.DecodeDate(&year,&month,&days);
hours+=days*24;
String a="";
a.printf("%d:%d:%d",hours,minutes,seconds);
ShowMessage(a);