Я пытаюсь преобразовать некоторые временные метки MySQL в официальный формат .ics. К сожалению, я всегда получаю вывод19700101T013334Z
».
MySQL формат: 2014-09-29 18:00:00
Это моя функция PHP, которая должна преобразовывать даты соответственно:
function dateToCal($timestamp) {
return date('Ymd\THis\Z', $timestamp);
}
Что я делаю неправильно?
date()
ожидает метку времени Unix в качестве второго параметра. Ты можешь использовать strtotime()
преобразовать $timestamp
к метке времени Unix для вас.
function dateToCal($timestamp) {
return date('Ymd\THis\Z', strtotime($timestamp));
}
Это может быть проще и лучше, если вы конвертируете эту дату в метку времени Unix в своем запросе, используя UNIX_TIMESTAMP()
.
Я знаю, что вы уже получили ответ, но вы также можете сделать это в базе данных:
SELECT FORMAT_DATE("2014-09-29 18:00:00", "%Y%m%dT%H%i%sZ");
Буква Z в конце указывает на UTC, поэтому, если вы храните свои даты, используя системное время, вы также захотите их преобразовать.
Вы должны преобразовать дату и время MySql в метку времени Unix, чтобы использовать ее —
function dateToCal($timestamp) {
date('Ymd\THis', strtotime($timestamp));
}
Вы действительно не должны иметь \Z
в функции.