Ответ 1
Вы можете вызвать ->setTime(0, 0)
чтобы обнулить часть времени:
$date = DateTime::createFromFormat('Y-m-d', '2011-01-22')->setTime(0, 0);
echo $date->format('d M Y g:i:s a');
// 22 Jan 2011 12:00:00 am
Я пробовал
$dtToday = DateTime::createFromFormat('Y-m-d', date('Y-m-d'));
но когда я вывожу его
die($dtToday->format('d M Y g:i:s a'));
Я все еще получаю время, например "22 янв. 2011 4:53:59". Почему это?
UPDATE
Ах... многие меня неправильно поняли, я плохо, я забыл указать на главный момент. Я создал дату только с датой, я не хочу времени. Поэтому я ожидал бы что-то вроде
22 Jan 2011 12:00:00 am
Вы можете вызвать ->setTime(0, 0)
чтобы обнулить часть времени:
$date = DateTime::createFromFormat('Y-m-d', '2011-01-22')->setTime(0, 0);
echo $date->format('d M Y g:i:s a');
// 22 Jan 2011 12:00:00 am
См. документацию для DateTime::createFromFormat
:
Если формат не содержит символа! то части сгенерированного времени, которые не указаны в формате, будут установлены на текущее системное время.
Если вы выполните следующий вызов функции, вы получите ожидаемый результат:
$dtToday = DateTime::createFromFormat('!Y-m-d', date('Y-m-d'));
Вы можете сделать это, передав текущую временную метку unix в качестве второго параметра функции даты
echo date("Y-m-d H:i:s",time());
Сегодня начинаем отметку времени
$today_start_ts = strtotime(date('Y-m-d', time()). '00:00:00');
Вы получаете "22 янв. 2011 4:53:59 pm", потому что это правила, которые вы отформатируете для своей даты:
d (день): 22
M (месяц): Ян
Y (Год): 2011
г (12-часовой формат): 4
i (минуты): 53
s (секунды): 59
a (am/pm): pm
Будьте более точными относительно формата, который вам понравится в вашей временной метке.
Я предлагаю вам взять пик в документации php date.
Используется ли UTC или что-то еще?
У меня есть версия PHP, которая дает мне ошибку всякий раз, когда я делаю что-то date
, связанное без предварительного использования date_default_timezone_set
. Возможно, это поможет вам.
Удалите эту часть g:i:s a
из своего кода.
Теперь, если вам нужна хорошая дата, отформатированная в соответствии с вашим локальным, я рекомендую вам использовать strftime()
.