Intereting Posts
PHP 35: ошибка: 14094410: SSL-процедуры: SSL3_READ_BYTES: sslv3 сбой при сбое Laravel вырывает поля из отношений отправить данныеURL в php и сохранить на сервере Отношение модели CakePHP, имеющее 2 внешних ключа в одной таблице Возможно ли использовать последний метод статического класса? Как конвертировать текст в изображения на лету? Может ли кто-нибудь указать мне на хорошую реализацию пароля хеширования PHP / MySQL? Уничтожьте сеанс PHP на странице Печать вложенного массива PHP в виде $ var = value; PHP-скрипт для резервного копирования базы данных MySQL Перенаправление на 127.0.0.1 при доступе к wordpress, размещенному с apache и nginx в прокси-сервере Как получить текущий идентификатор термина таксономии на wordpress? Контроллер Zf3 не может получить доступ к таблице классов модели, расположенной в другом модуле Проблема ответа формы бюллетеня AMP Ошибка загрузки Google App Engine для PHPExcel

PHP: strtotime возвращает false для будущей даты?

вот некоторые отладочные выражения, которые я вставляю в eclipse, если вы мне не верите:

"strtotime("2110-07-16 10:07:47")" = (boolean) false "strtotime("2110-07-16")" = (boolean) false 

я использую его в своей функции, которая возвращает случайную дату между датой начала и окончания:

 public static function randomDate($start_date, $end_date, $format = DateTimeHelper::DATE_FORMAT_SQL_DATE) { if($start_date instanceof DateTime) $start_date = $start_date->format(DateTimeHelper::DATE_FORMAT_YMDHMS); if($end_date instanceof DateTime) $end_date = $end_date->format(DateTimeHelper::DATE_FORMAT_YMDHMS); // Convert timetamps to millis $min = strtotime($start_date); $max = strtotime($end_date); // Generate random number using above bounds $val = rand($min, $max); // Convert back to desired date format return date($format, $val); } 

любая идея, как заставить его вернуть правильное время unix для будущей даты?

благодаря!

Related of "PHP: strtotime возвращает false для будущей даты?"

Если вы хотите работать с датами, которые выходят за пределы 32-битного целочисленного диапазона дат, используйте PHP-объекты dateTime

 try { $date = new DateTime('2110-07-16 10:07:47'); } catch (Exception $e) { echo $e->getMessage(); exit(1); } echo $date->format('Ym-d'); 

Попробуйте сохранить его до Tue, 19 января 2038 03:14:07 UTC, когда эпоха времен временного интервала unix для 32-битных систем перевернется!

Это даже описано в руководстве по адресу http://php.net/strtotime

edit: Просто протестировано: оно исправлено установкой 64-битной ОС и соответствующей 64-разрядной версии php. Думаю, у нас есть достаточно времени, чтобы исправить перевоплощенную ошибку тысячелетия:

 $one = strtotime("9999-12-31 23:59:59"); $two = strtotime("10000-01-01 00:00:00"); var_dump($one); var_dump($two); int(253402297199) bool(false) 

Из руководства по PHP :

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

См. Также: Проблема 2038 года – Википедия

Вы не можете конвертировать даты, которые происходят после временного опроса unix (2038)

Простая замена strtotime

 $date = '2199-12-31T08:00:00.000-06:00'; echo date('Ym-d', strtotime($date)); // fails with 1970 result echo date_format( date_create($date) , 'Ym-d'); // works perfect with 5.2+ 

Фактический пост здесь .