Intereting Posts
Расстояние между двумя адресами MySQL объединяет несколько строк в виде столбцов Создание случайных координат вокруг местоположения Как обновить timezonedb в PHP (обновлять информацию о часовых поясах)? Помощь Единый вход между WordPress и Pligg Я получаю сообщение об ошибке в php artisan route: list command в laravel? Apache, javascript и PhoneGap: Каков наилучший способ прослушать какое-то случайное событие? Интервал или длительный опрос? PHP-код для создания безопасного URL-адреса? .htaccess mod_rewrite объяснение Как использовать DoctrineModule \ Validator \ NoObjectExists в редактируемых формах – Zend Framework 2 & Doctrine 2 как пройти поездку на php.ini PDO lastInsertId проблемы, php Пользователи Yii выходят из системы через 15-30 минут, несмотря на то, что тайм-ауты сеанса установлены как минимум на 1 день Как показать индикатор выполнения в загрузке файла ajax рекурсивное заполнение базы данных многомерным массивом

DateTime :: CreateFromFormat для PHP 5.2.14

Я использую следующий код для преобразования пользовательского ввода в timestamp mysql.

$datetime = DateTime::createFromFormat('m/d/Y g:i a', "{$exp}"); $timestamp = $datetime->format('Ymd H:i:s'); 

где $exp будет равным примерно: 06/12/2013 6:41 pm

Это отлично работает на моем локальном сервере, на котором работает PHP 5.4.3, но когда я загружаю тот же скрипт на свой сервер хостинга, он не хочет запускать эту часть, вероятно, из-за разницы в версиях PHP.

Как я могу исправить это или альтернативу этому? Благодаря!

Вы можете расширить класс DateTime и реализовать createFromFormat() самостоятельно следующим образом:

 class MyDateTime extends DateTime { public static function createFromFormat($format, $time, $timezone = null) { if(!$timezone) $timezone = new DateTimeZone(date_default_timezone_get()); $version = explode('.', phpversion()); if(((int)$version[0] >= 5 && (int)$version[1] >= 2 && (int)$version[2] > 17)){ return parent::createFromFormat($format, $time, $timezone); } return new DateTime(date($format, strtotime($time)), $timezone); } } $dateTime = MyDateTime::createFromFormat('Ym-d', '2013-6-13'); var_dump($dateTime); var_dump($dateTime->format('Ym-d')); 

Это будет работать во всех версиях PHP> = 5.2.0.

См. Здесь демо-версию http://3v4l.org/djucq

Чтобы создать временную метку с определенной даты …:

 $time = "06/12/2013 6:41 pm"; $format = "%m/%d/%Y %l:%M %P"; $ts = strptime($time, $format); $ts = mktime($ts['tm_hour'], $ts['tm_min'], $ts['tm_sec'], $ts['tm_mon'], $ts['tm_mday'], ($ts['tm_year'] + 1900)); 

после того, как вы сможете использовать, как хотите:

 $mysql_timestamp = date("Ymd H:i:s", $ts);