У меня есть переменная, как это:
$event_start_date_hour_ISO = str_replace(':',', ',$event_start_hour).', 0, '.date('d, m, Y', $event_start_day);
echo
Результат $event_start_date_hour_ISO
является 11, 30, 0, 06, 02, 2016
,
Если я сделаю следующее:
echo date(DATE_ATOM, mktime($event_start_date_hour_ISO))
Результат 2016-02-06T11:48:08+02:00
,
Если я сделаю:
echo date(DATE_ATOM, mktime(11, 30, 0, 06, 02, 2016))
Результат, если правильный:
2016-06-02T11:30:00+03:00
Кроме +03:00
Мой UTC + 2.
Что я делаю неправильно? Как поставить данные из переменной и получить правильный ответ?
Я не совсем понимаю вашу проблему. Но я думаю, что вы перевернули месяц и день в функции mktime.
mktime(Hour, minute , second, month, day, year);
Похоже, DateTime
класс полезен здесь.
$event_start_day; // A timestamp
$event_start_hour; // A string in format... H:i:s.... 13:30:00
$event_arr = explode(':', $event_start_hour);
$event_date = new DateTime();
$event_date->setTimestamp($event_start_day);
$event_date->setTime(
$event_arr[0],
$event_arr[1],
$event_arr[2],
);
echo $event_date->format('Y-m-d H:i:s');
Также может быть полезно взглянуть на DateTimeZone
,