Установите время в php на 00:00:00

#php #time

#php #время

Вопрос:

Мне нужно отобразить время, но оно должно начинаться с 00:00:00? У меня есть следующее, но оно использует текущее время.

 print(date("H:i:s"));
  

Комментарии:

1. Можете ли вы немного рассказать о том, что вы пытаетесь сделать? Это может быть я, но я не понимаю, что вы пытаетесь сделать.

2. @Aron Не волнуйся — это не ты.

3. Я думаю, ему нужно «дельта» время, то есть PHP-эквивалент Stopwatch класса C #.

4. Вы пытаетесь создать какой-то таймер?

5. echo '00:00:00' tada!

Ответ №1:

В качестве альтернативы mktime() попробуйте более новый DateTime класс, например

 $dt = new DateTime;
$dt->setTime(0, 0);
echo $dt->format('H:i:s');

// Add one hour
$dt->add(new DateInterval('PT1H'));
echo $dt->format('H:i:s');
  

Обновить

Гибкость DateInterval делает это очень хорошим кандидатом для таймера, например

 // add 2 years, 1 day and 9 seconds
$dt->add(new DateInterval('P2Y1DT9S'));
  

Комментарии:

1. что означает P2Y1DT9S? можете объяснить это в форме разбивки? Я не могу найти объяснение в классе DateInterval

2. @Shiro P = период, 2Y = 2 года, 1D = 1 день, T = время, 9S = 9 секунд

3. Да, класс PHP DateTime (и связанные с ним классы, такие как DateInterval), в общем, действительно привлекательны и просты в использовании … и значительно проще и менее хакерски, чем «старый» способ обработки дат. Это отличный ответ на этот вопрос, но я также просто хочу сказать всем, кто читает это, что стоит потратить время, чтобы узнать, как их использовать, если вы ЧТО-ТО делаете с датами или временем.

Ответ №2:

Используйте mktime() , если вы хотите начать с полуночи для текущей даты:

 <?php

echo date('l jS of F Y h:i:s A',mktime(0,0,0));

?>
  

ВЫВОДИТ

 Friday 14th of October 2011 12:00:00 AM
  

http://codepad.org/s2NrVfRq

В mktime() , вы передаете аргументы для hours, minutes, seconds, month, day, year , поэтому установите hours, minutes, seconds 0 для get today at midnight . (Обратите внимание, как указывает Фил, mktime() аргументы ‘s являются необязательными, и вы можете не month, day, year указывать, и по умолчанию будет использоваться текущая дата).

mktime() Функция возвращает временную метку unix, представляющую количество секунд, прошедших с эпохи unix (1 января 1970 года). Вы можете отсчитывать от него в секундах или кратных секундам.

 <?php

// $midnight = mktime(0,0,0,date('m'),date('d'),date('Y'));
// The above is equivalent to below
$midnight = mktime(0,0,0);

echo date('l jS of F Y h:i:s A',$midnight)."n";
echo date('l jS of F Y h:i:s A',$midnight 60)."n"; // One minute
echo date('l jS of F Y h:i:s A',$midnight (60*60))."n"; // One hour

?>
  

ВЫВОДИТ

 Friday 14th of October 2011 12:00:00 AM
Friday 14th of October 2011 12:01:00 AM
Friday 14th of October 2011 01:00:00 AM
  

http://codepad.org/FTr98z1n

Комментарии:

1. Вы знаете, что вы можете опустить аргументы месяца, дня и года mktime() , если хотите использовать текущие значения

2. Смотрите Ответ ladenedge. Вы просто оставляете их, передавая только три аргумента

3. Хорошо, я понимаю, что вы имеете в виду. Это имеет смысл.

Ответ №3:

date() использует текущее время, когда вы не передаете явную временную метку. Смотрите необязательный аргумент в date документации.

Если вы хотите явно отформатировать полночь, используйте:

 date("H:i:s", mktime(0, 0, 0));
  

Ответ №4:

попробуйте использовать этот синтаксис:

 print(date("H:i:s", 0));
  

или

 print(date("H:i:s", 10)); // 10 seconds
  

Комментарии:

1. Будьте осторожны, так как date() чувствительны к часовому поясу. 0 или 10 секунд после полуночи 1 января 1970 года будут выглядеть совершенно по-разному в зависимости от вашего часового пояса

2. Значение 0 будет меняться в зависимости от вашей версии PHP. Начиная с версии 5.1.0, 0 означает Пт, 13 декабря 1901 года, 20:45:54.

3. да, для времени UNIX он должен использовать mktime(…)

4. @ladenedge Нет, 0 по-прежнему соответствует полуночи, 1 января 1970 года по Гринвичу. Временные метки Unix являются целыми числами со знаком

5. Хорошо, заткни мне рот. Хороший улов, Фил.