У меня проблема времени / даты. Я пытаюсь сравнить текущую дату и время с датой / временем в начале дня (полночь).
Текущее время:
echo date('d M, Y H:i:s e')."<br>";
Это возвращается, как и ожидалось: «07 октября 2014 12:51:25 Америка / Los_Angeles»
Затем, чтобы получить время в полночь в начале сегодняшнего дня, у меня есть:
echo date('d M, Y H:i:s e',strtotime(date('D, d M, Y')))."<br>";
который возвращает это: «07 октября 2014 20:14:00 America / Los_Angeles»
10 (8 вечера) странно, так как UTC не должно быть 08:00, а не 20:00? а 14 минут?
Может ли кто-нибудь помочь мне понять, что происходит здесь? Что мне не хватает?
Большое спасибо
date('Y-m-d H:i:s')
дает тебе ток время, а не полночь Попробуйте использовать следующий код:
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d 00:00:00')))."<br>";
«00:00:00» установить время до полуночи.
И вы можете использовать этот простой вариант:
echo date('d M, Y 00:00:00 e')
Вы отправляете вводящую в заблуждение строку даты в strtotime
функция.
Если вы попробуете это:
echo date('d M, Y H:i:s e').'<br>';
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d H:i:s')))."<br>";
Вы получите последовательный результат как Y-m-d H:i:s
это гораздо лучший формат для strtotime
работать с.
Функция ожидает получить строку, содержащую формат даты на английском языке и попытается проанализировать этот формат в метку времени Unix (количество секунд с 1 января 1970 г. 00:00:00 UTC) относительно временной отметки, указанной в текущем времени, или текущего времени, если сейчас не указано.
а также
Чтобы избежать двусмысленности, лучше использовать даты ISO 8601 (ГГГГ-ММ-ДД) или DateTime :: createFromFormat (), когда это возможно.
Чтобы получить время, которое вы ищете в полночь (я бы не предложил такой подход):
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d')))."<br>";
Вы можете легко вывести «вне времени» дату и вставить статический 00:00:00
непосредственно внутри функции даты:
echo date('d M, Y 00:00:00 e')."<br>";
Но мне нравится использовать DateTime
объекты:
$midnight = new DateTime('today');
echo $midnight->format('d M, Y H:i:s e').'<br>';
// Output from sandbox is: 07 Oct, 2014 00:00:00 US/Pacific<br>
Приятно то, что вы можете легко сравнить их без каких-либо дополнительных манипуляций:
$now = new DateTime('now'); // 2014-10-07 12:34:56
$midnight = new DateTime('today'); // 2014-10-07 00:00:00
var_dump($now > $midnight); // true
var_dump($now < $midnight); // false
var_dump($now === $midnight); // false
var_dump($now !== $midnight); // true