| |
|
|
| | Первого января 1980 года в 0:0 началась некая астрономическая эпоха.
Спрашивается, сколько суток прошло с на начала этой эпохи по состоянию на 27 июля 1980 года?
Ответ из Астрономического ежегодника: 209
$mktime_1 = mktime(0, 0, 0, 1, 1, 1980);
$mktime_2 = mktime(0, 0, 0, 7, 27, 1980);
echo ($mktime_2 - $mktime_1) / 86400 ;
|
Результат: 207.958333333
Почему так? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(28.10.2007 в 14:54)
| | | Проверьте код, что написали тут и тот, что в скрипте. Ваш код выводит у меня 208. А 208 вместо 209, потому что надо писать $mktime_1 = mktime(0, 0, 0, 0, 0, 1980);
Ведь в 00:00 1-ого 1980 года еще не прошло и секунды, не говоря о сутках. Не так ли? | |
| |
|
|
| |
|
|
| |
для: Unkind
(28.10.2007 в 15:23)
| | | Можно для теста сделать вот что:
$mktime_1 = mktime(0, 0, 0, 1, 1, 1980);
$mktime_2 = mktime(0, 0, 0, 7, 27, 1980);
$mktime = $mktime_2 - $mktime_1 ;
echo "<br> mktime = $mktime ";
echo "<br>";
echo ($mktime_2 - $mktime_1) / 86400 ;
|
Разница в секундах составляет 17967600. Если на калькуляторе это число разделить на 86400, то получается 207.958333333. Целого числа не получается. Почему - непонятно.
** надо писать $mktime_1 = mktime(0, 0, 0, 0, 0, 1980);
Ведь в 00:00 1-ого 1980 года еще не прошло и секунды, не говоря о сутках. Не так ли? **
Конечно так! Но результат от этого удивительный:
$mktime_1 = mktime(0, 0, 0, 0, 0, 1980);
$mktime_2 = mktime(0, 0, 0, 7, 27, 1980);
echo ($mktime_2 - $mktime_1) / 86400 ;
|
Вывод: 239.958333333 | |
| |
|
|
| |
|
|
| |
для: Владимир55
(28.10.2007 в 15:39)
| | | А Вы время на час назад перевели? | |
| |
|
|
| |
|
|
| |
для: Unkind
(28.10.2007 в 16:06)
| | | Компьютер автоматически скорректировал время, я даже этого не заметил.
Но как это могло сказаться на расчетах событий четвертьвековой давности, о которых тут речь? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(28.10.2007 в 16:26)
| | | Как-то странно у Вас выходит. На час различие. При чем, похоже, mktime() в одном случае возвращает такое же значение, как и у меня, а во втором случае у нас получились разные значения.
<?php
$mktime_1 = mktime(0, 0, 0, 0, 0, 1980);
$mktime_2 = mktime(0, 0, 0, 7, 27, 1980);
echo $mktime_1, " ", $mktime_2; //?
?>
|
| |
| |
|
|
| |
|
|
| |
для: Unkind
(28.10.2007 в 16:36)
| | |
$mktime_1 = mktime(0, 0, 0, 0, 0, 1980);
$mktime_2 = mktime(0, 0, 0, 7, 27, 1980);
echo $mktime_1, " ", $mktime_2; //?
echo "<br> ";
echo ($mktime_2 - $mktime_1) ;
echo "<br> ";
echo ($mktime_2 - $mktime_1) / 86400 ;
|
Получаем:
312757200 333489600
20732400
239.958333333 | |
| |
|
|
| |
|
|
| |
для: Владимир55
(28.10.2007 в 16:54)
| | | Действительно странно. У меня второе значение (mktime(0, 0, 0, 7, 27, 1980)) равно 333493200, а у Вас - 333489600. То есть у меня на 3600 секунд больше. По идее, тогда первое должно отличаться тоже. Но нет... | |
| |
|
|
| |
|
|
| |
для: Unkind
(28.10.2007 в 18:20)
| | | Вероятно, причиной является переход на летнее время, произошедший 30 марта 1980 года.
$mktime_30 = mktime(0, 0, 0, 3, 30, 1980);
echo "<br>30 марта = $mktime_30";
$mktime_31 = mktime(0, 0, 0, 3, 31, 1980);
echo "<br>31 марта = $mktime_31";
echo "<br> Сутки длятся - ";
echo ($mktime_31 - $mktime_30) ;
|
Получаем:
30 марта = 323211600
31 марта = 323294400
Сутки длятся - 82800
То есть эти сутки короче обычных...
Похоже?
Если так, то лекарство
$mktime_30 = mktime(0, 0, 0, 3, 30, 1980, 1);
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(28.10.2007 в 16:26)
| | | кажется, июль - не седьмой, а шестой месяц. нумерация начинается с 0. | |
| |
|
|
| |
|
|
| |
для: elenaki
(28.10.2007 в 16:36)
| | | Может быть и так.
Однако в примере применения mktime в справочнике на этом сайте можно прочесть:
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998)); // - "Jan-01-1998" | |
| |
|
|
| |
|
|
| |
для: Владимир55
(28.10.2007 в 16:58)
| | |
<?
echo mktime(0, 0, 0, 7, 27, 1980, 0);
echo mktime(0, 0, 0, 7, 27, 1980, 1);
|
| |
| |
|
|
|