Строка для даты и времени с CET / CEST

У меня возникли некоторые трудности с преобразованием строки в 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

0

Решение

Вы должны использовать 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
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]