Я использую следующий код для преобразования пользовательского ввода в 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);