История изменений
Исправление bormant, (текущая версия) :
{$codepage utf8}
uses SysUtils, DateUtils;
type
TGrNum = (gnSingle, gnDual, gnPlural);
TNumStr = array [TGrNum] of UnicodeString;
function GrN(n: LongWord): TGrNum;
begin
Result := gnPlural;
if not (n mod 100 in [5..20]) then
case n mod 10 of
1: Result := gnSingle;
2..4: Result := gnDual;
end;
end;
const
sDay: TNumStr = ('день', 'дня', 'дней');
sHour: TNumStr = ('час', 'часа', 'часов');
sMin: TNumStr = ('минута', 'минуты', 'минут');
sSec: TNumStr = ('секунда', 'секунды', 'секунд');
var
df: Int64;
d, h, m, s: Word;
begin
df := SecondsBetween(Now, EndOfTheYear(Now)) + 1;
WriteLn('До нового года ', df, ' ', sSec[GrN(df mod 100)]);
d := df div 86400; df := df mod 86400;
h := df div 3600; df := df mod 3600;
m := df div 60;
s := df mod 60;
WriteLn('или ', d, ' ', sDay[GrN(d)], ' ', h, ' ', sHour[GrN(h)],
' ', m, ' ', sMin[GrN(m)], ' ', s, ' ', sSec[GrN(s)]);
end.
Исходная версия bormant, :
{$codepage utf8}
uses SysUtils, DateUtils;
type
TGrNum = (gnSingle, gnDual, gnPlural);
TNumStr = array [TGrNum] of UnicodeString;
function GrN(n: LongWord): TGrNum;
begin
Result := gnPlural;
if not (n mod 100 in [5..20]) then
case n mod 10 of
1: Result := gnSingle;
2..4: Result := gnDual;
end;
end;
const
sDay: TNumStr = ('день', 'дня', 'дней');
sHour: TNumStr = ('час', 'часа', 'часов');
sMin: TNumStr = ('минута', 'минуты', 'минут');
sSec: TNumStr = ('секунда', 'секунды', 'секунд');
var
df: Int64;
d, hr, mn, sc: Word;
begin
df := SecondsBetween(Now, EndOfTheYear(Now)) + 1;
WriteLn('До нового года ', df, ' ', sSec[GrN(df mod 100)]);
d := df div 86400; df := df mod 86400;
hr := df div 3600; df := df mod 3600;
mn := df div 60;
sc := df mod 60;
WriteLn('или ', d, ' ', sDay[GrN(d)], ' ', hr, ' ', sHour[GrN(hr)],
' ', mn, ' ', sMin[GrN(mn)], ' ', sc, ' ', sSec[GrN(sc)]);
end.