Convert seconds to compound duration: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 1,519: | Line 1,519: | ||
9 wk, 6 d, 10 hr, 40 min |
9 wk, 6 d, 10 hr, 40 min |
||
</pre> |
</pre> |
||
const TestData: array [0..2] of integer = (7259,86400,6000000); |
|||
function SecondsToFormatDate(Sec: integer): string; |
|||
var DT: TDateTime; |
|||
var Weeks: integer; |
|||
var AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word; |
|||
const SecPerDay = 60 * 60 * 24; |
|||
begin |
|||
{Convert seconds to Delphi TDateTime} |
|||
{which is floating point days} |
|||
DT:=Sec / SecPerDay; |
|||
{Get weeks and subtract them off} |
|||
Weeks:=Trunc(DT/7); |
|||
DT:=DT - Weeks * 7; |
|||
{Decode date} |
|||
DecodeDateTime(DT,AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond); |
|||
{Compensate because TDateTime starts on Dec 30th 1899} |
|||
if aDay<30 then aDay:=aDay + 1 else aDay:=aDay - 30; |
|||
Result:=''; |
|||
if Weeks<>0 then Result:=Result+IntToStr(Weeks)+' wk, '; |
|||
if ADay<>0 then Result:=Result+IntToStr(ADay)+' d, '; |
|||
if AHour<>0 then Result:=Result+IntToStr(AHour)+' hr, '; |
|||
if AMinute<>0 then Result:=Result+IntToStr(AMinute)+' min, '; |
|||
if ASecond<>0 then Result:=Result+IntToStr(ASecond)+' sec, '; |
|||
end; |
|||
procedure ShowFormatedDataTime(Memo: TMemo); |
|||
var I: integer; |
|||
begin |
|||
for I:=0 to High(TestData) do |
|||
Memo.Lines.Add(IntToStr(TestData[I])+' = '+SecondsToFormatDate(TestData[I])); |
|||
end; |
|||
=={{header|EasyLang}}== |
=={{header|EasyLang}}== |