Unix Time Stamp

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

mansoff
Сообщения: 36

Unix Time Stamp

Сообщение mansoff »

(Пардон , не в тот раздел написал )
Задался я целью написать прогу на паскале (единственнйы язык граматику которого я знаю)
которая из тайм штампа делает нормальное человеческое время ))
сабж я написал день она нормально находит год и месяц а вот со временем никак .
сабж сама программа (за алгоритм не ругайте паскаль учу только второй год и тот в школе 2 раза в неделю)

Код: Выделить всё

program unix_time;
  var x:longint;   {chitajem s ekrana time shtamp po unix}
   function today(st:longint) : integer;   {st - time shtamp po unix}
   var y,d,day,h,mes,min,s,yearsek,pogreshnost : longint;
   begin
   yearsek := 31536000   {god v sekundah};
   y := 1970 + st div yearsek;   {kakoj segodnia god }


   pogreshnost := (y-1972) div 4;
    {shcitajem skolko vysokosnyh
     godov my propustili pervyj vysokosnyj s 1970 goda eto 1972 }


   d :=(st mod yearsek) div 60 div 60 div 24 - pogreshnost; {stolko
    dnej otnimajem, ved  vysokosnyje goda ne schitali , i poluchim den goda}



   s := st mod 60; {ostavshijesia sekundy}
   min := st div 60 mod 60;
   h := st div 60 div 60 mod 24;


   if y mod 4 = 0 then  {tut ishem mesiac goda}
          case d of
           1..31   : mes :=  1;
           32..60  : mes :=  2;
           61..91  : mes :=  3;
           92..121 : mes :=  4;
           122..152: mes :=  5;
           153..182: mes :=  6;
           183..213: mes :=  7;
           214..244: mes :=  8;
           245..274: mes :=  9;
           275..305: mes := 10;
           306..335: mes := 11;
           336..366: mes := 12;
         end
     else
         case d of
           1..31   : mes :=  1;
           32..59  : mes :=  2;
           60..90  : mes :=  3;
           91..120 : mes :=  4;
           121..151: mes :=  5;
           152..181: mes :=  6;
           182..212: mes :=  7;
           213..243: mes :=  8;
           244..273: mes :=  9;
           274..304: mes := 10;
           305..334: mes := 11;
           335..365: mes := 12;
         end;
     if y mod 4 =0
     then
     case mes of   {ishem den' mesiaca}
       1:  day := d-0;
       2:  day := d-31;
       3:  day := d-60;
       4:  day := d-91;
       5:  day := d-121;
       6:  day := d-152;
       7:  day := d-182;
       8:  day := d-213;
       9:  day := d-244;
       10: day := d-274;
       11: day := d-305;
       12: day := d-335;
       end
     else
     case mes of
       1:  day := d-0;
       2:  day := d-31;
       3:  day := d-59;
       4:  day := d-90;
       5:  day := d-120;
       6:  day := d-151;
       7:  day := d-181;
       8:  day := d-212;
       9:  day := d-243;
       10: day := d-273;
       11: day := d-304;
       12: day := d-334;
       end;
   writeln('God = ',y,', den v gou = ',d,
   ', mesiac = ',mes,', den mesaica = '
   ,day,', chiasy = ',h,', minuty = '
   ,min,', sekundy = ',s,'.');
   today := y;
end;
begin
readln(x);

x:=today(x);
end.
Спасибо сказали:
mansoff
Сообщения: 36

Re: Unix Time Stamp

Сообщение mansoff »

отбой тревоги , прога рабочая , тоьлко нужно вводить поправку по gmt
тему можно закрыть
Спасибо сказали: