Pers.narod.ru. PHP. Статьи. UNIX TimeStamp online

Мдя, понадобился идущий timestamp, а онлайн навскидку ничего не попалось. Что такое Unix time stamp, зачем он нужен и когда перестанет работать - вот здесь, там же и сервис для пересчёта timestamp'ов в даты и обратно, вот только метка времени не идёт... в смысле, не двигается в реальном времени :) Понятно, что каждый раз перегружать страницу, чтоб увидеть серверную метку времени, глупо и медленно, проще вставить пару строк на Javascript, можно надеяться, что точность яваскрипта достаточно высока, чтоб прибавлять по секунде времени и не создать заметных отклонений без перезагрузки страницы. Использовать JQuery и прочие аяксы (как сделано в сервисе по ссылке) - из пушки по воробьям...

Мне хватило вот такого простейшего сервиса, написанного за пару минут (здесь вызываю из тега <iframe>, возможно, в кривоватых браузерах при первой загрузке понадобится обновить страницу статьи; также в браузере должен быть включён яваскрипт):

А вот полный исходник шыдевра:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <meta content="text/html; charset=Windows-1251" http-equiv="content-type">

 <title>TimeStamp</title>
 <script type="text/javascript">
  var time=0;
  function set (t) { 
   time=t; 
   window.setTimeout('show()', 1000);
  }
  function show () { 
   time++;
   document.getElementById('time').innerHTML=time; 
   window.setTimeout('show()', 1000);
  }
 </script>
</head>
<body>

<?php
 $t=time();
 echo '<p>UNIX timestamp now is <span id="time">'.$t."</span>\n".
 '<script type="text/javascript">set('.$t.');</script>',
 '<p>Time fixed in ',gmdate("d M Y, H:i:s"),' GMT, server time is ',date("d M Y, H:i:s"),'</p>',
 '<p><a href="',$_SERVER['PHP_SELF'],'">Reload</a></p>';
?>

</body>
</html>

 Постоянная ссылка на сервис UNIX TimeStamp онлайн (функционал и код сервиса могут со временем измениться)

А в этом примере мы вычисляем, время, когда перестанет работать 32-разрядный Unix timestamp:

<?php
 //Вычисляем время, когда перестанет работать
 //32-разрядный Unix timestamp
 $t=time();
 $MAXINT =  2147483647;
 $till = $MAXINT - $t;
 $ds=sprintf("%d",$till/86400);
 echo 'Max.date=',date("d M Y, H i s",$MAXINT),
  ' till ',$ds,' day(s)';
?>

Вот что выдал этот код:

Max.date=19 Jan 2038, 09 14 07 till 9428 day(s)

Почему именно 2147483647 как максимальное значение timestamp? Потому что 2147483647 - это максимальное 32-битное целое со знаком, так что

long int x=2147483647;
cout << "2147483647+1=" << (x+1);

не только на C++ выдаст ответ

2147483647+1=-2147483648

Ведь время 1 января 1970, 00:00:00 GMT было значением ноль метки времени Unix, значит, число надо рассматривать как знаковое. Вот тогда-то и будет пресловутая "проблема-2000", если, конечно, к тому времени 32-разрядная архитектура не умрёт окончательно.

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz