У меня возникли некоторые трудности с преобразованием строки в datetime в PHP.
Строка может заканчиваться как CEST, так и CET в качестве часового пояса, так что, я думаю, мне нужно как-то разделиться до этого? Я не ищу хранить CET или CEST. Я только хочу, чтобы дата конвертировалась в дату и время.
Это строки:
Dec 27 2017, 22:46:15 CET
а также Dec 27 2017, 22:46:15 CEST
Но также, пробелы в строках
а не обычные пробелы. Так в HTML это выглядит так:
Dec 27 2017, 22:46:15 CET
а также Dec 27 2017, 22:46:15 CEST
Я хочу, чтобы он был преобразован в: 2017-12-27 22:46:15
и затем вставьте это в мою базу данных. Я понял, как изменить это в запросе SQL (мой столбец называется последний Войти) и я делаю это, делая это:
STR_TO_DATE(SUBSTRING_INDEX(REPLACE(lastlogin,char(160),' '),'C',1), '%b %d %Y, %T')
Но я бы очень хотел сделать это на PHP. Так скажем, моя переменная с датой называется $lastlogin
Как мне применить эту логику SQL к моему PHP? char(160)
в SQL это
Я не уверен насчет PHP.
Редактировать:
Я храню его в переменной $ character-> lastlogin. (примечание: по-видимому, это становится  
вместо
)
$character->lastlogin = str_replace(' ', ' ', $character->lastlogin);
$datetime = DateTime::createFromFormat('M d Y, H:i:s e', $character->lastlogin);
$character->lastlogin = $datetime->format('Y-m-d H:i:s');
Дает мне эту ошибку: Fatal error: Uncaught Error: Call to a member function format() on boolean
Вы должны использовать DateTime::createFromFormat
// CET Timezone (+01:00)
$datetime = DateTime::createFromFormat('M d Y, H:i:s e', 'Dec 27 2017, 22:46:15 CET');
// change timezone to UTC (+00:00) (if necessary)
$datetime->setTimeZone(new DateTimeZone('UTC'));
$output = $datetime->format('Y-m-d H:i:s');
// output: 2017-12-27 21:46:15
Других решений пока нет …