LINUX.ORG.RU

История изменений

Исправление saahriktu, (текущая версия) :

А вот это более универсальный вариант, который считает время не до конкретного года, а до следующего:

program timetonextyear;
{$codepage utf8}
uses cwstring, sysutils, dateutils;
var
        nowtime, thentime, timediff: int64;
        ttdays, tthours, ttminutes, ttseconds: int64;
        syear, smonth, sday: word;
begin
        decodedate(now, syear, smonth, sday);
        inc(syear);
        nowtime := datetimetounix(now);
        thentime := datetimetounix(encodedate(syear, 1, 1));
        timediff := thentime - nowtime;
        ttdays := timediff div 86400;
        dec(timediff, ttdays * 86400);
        tthours := timediff div 3600;
        dec(timediff, tthours * 3600);
        ttminutes := timediff div 60;
        dec(timediff, ttminutes * 60);
        ttseconds := timediff;
        writeln('до ', syear, ' года осталось ', ttdays, ' дней, ', tthours, ' часов, ',
                ttminutes, ' минут и ', ttseconds, ' секунд.');
end.

Исходная версия saahriktu, :

А вот это более универсальный вариант, который считает время не до конкретного года, а до следующего:

program timetonextyear;
{$codepage utf8}
uses cwstring, sysutils, dateutils;
var
        nowtime, thentime, timediff: int64;
        ttdays, tthours, ttminutes, ttseconds: int64;
        syear, smonth, sday: Word;
begin
        decodedate(now, syear, smonth, sday);
        inc(syear);
        nowtime := datetimetounix(now);
        thentime := datetimetounix(encodedate(syear, 1, 1));
        timediff := thentime - nowtime;
        ttdays := timediff div 86400;
        dec(timediff, ttdays * 86400);
        tthours := timediff div 3600;
        dec(timediff, tthours * 3600);
        ttminutes := timediff div 60;
        dec(timediff, ttminutes * 60);
        ttseconds := timediff;
        writeln('до ', syear, ' года осталось ', ttdays, ' дней, ', tthours, ' часов, ',
                ttminutes, ' минут и ', ttseconds, ' секунд.');
end.