почему strotime возвращает отрицательное значение в php? - PullRequest
1 голос
/ 12 августа 2010

Я использую strtotime для преобразования даты в штамп unixtime. Год, дата и день представляют собой разные значения кода, и я использую приведенный ниже код для получения метки времени.

$year  = '1961';
$month = '2';
$day   = '15';

$date  = $year."-".$month."-".$day;

echo strtotime($date);

Приведенный выше код печатает: -27648000 для меня. Если год выше 1970 года, это дает положительные результаты. Я все еще учусь с отметкой времени, если кто-нибудь может мне помочь. Основная цель - преобразовать дату в метку времени Unix.

Вопрос в том, почему он дает отрицательные результаты. Я плохо его кодирую !? Я тоже пробовал mktime, но результат все тот же.

Спасибо, Tanmay

Ответы [ 6 ]

5 голосов
/ 12 августа 2010

Это связано с эпохой Unix.

См .: date() и time()

Допустимый диапазон отметки времениобычно с пт, 13 декабря 1901 г. 20:45:54 мск, в вторник, 19 января 2038 г. 03:14:07 мск.(Это даты, которые соответствуют минимальным и максимальным значениям для 32-разрядного целого числа со знаком).Однако до PHP 5.1.0 этот диапазон был ограничен с 01-01-1970 до 19-01-2038 в некоторых системах

4 голосов
/ 12 августа 2010

Это ожидаемое поведение.

strtotime возвращает метку времени UNIX, количество секунд с 1 января 1970 года (без учета високосных секунд).Для дат до этого он вернет отрицательное число.

1 голос
/ 12 августа 2010

Время Unix начинается в эпоху Unix, которая наступает в полночь 1 января 1970 года. Поэтому любая предшествующая дата приведет к возвращению отрицательного значения.

0 голосов
/ 12 августа 2010

http://en.wikipedia.org/wiki/Unix_time

Время Unix, или время POSIX, представляет собой систему для описания моментов времени, определяемых как количество секунд, прошедших с полуночного универсального координированного времени (UTC) от 1 января 1970 года,не считая високосных секунд.Он широко используется не только в Unix-подобных операционных системах, но и во многих других компьютерных системах и форматах файлов.Это не линейное представление времени и не истинное представление UTC (хотя его часто принимают за оба), поскольку время, которое оно представляет, является временем UTC, но не представляет стандартные високосные секунды UTC (например, 31 декабря 1998 г. 23:59:60).) ...

Время до 01.01.1970 является отрицательным значением по сравнению с началом UTC.

0 голосов
/ 12 августа 2010

Я все еще учусь с отметкой времени,

Google unix timestamp -> http://en.wikipedia.org/wiki/Unix_time

определяется как количество секунд, прошедших с полуночного координированного универсального времени (UTC) 1 января 1970

0 голосов
/ 12 августа 2010

Это метка времени Unix. Базовая дата Unix / PHP - 1 января 1970 года в 00:00 UST, а отметка времени измеряется в секундах. Если отрицательный, это количество секунд до базовой даты; если положительный, количество секунд после

...