Обе эти опции довольно ужасны - если вы пытаетесь получить текущую дату в полночь в виде отформатированной строки, это так просто:
date('Y-m-d') . ' 00:00:00';
Или, если вы хотите быть немного более явным,
date('Y-m-d H:i:s', strtotime('today midnight'));
Нет необходимости делать эту дурацкую вещь mktime
. Кто бы ни написал этот код, он не знает, что делает, и / или является разработчиком копирования-вставки / Cargo-Cult. Если вы действительно видите это в «большинстве примеров», то толпа, с которой вы тусуетесь, глубоко обеспокоена , и вам, вероятно, следует прекратить тусоваться с ними.
Единственная интересная вещь, которую mktime
делает, это попытка работать с местным часовым поясом. Если ваша работа зависит от часового пояса, и вы работаете с PHP 5.3 или выше, рассмотрите возможность работы с DateTime и DateTimeZone . Демонстрация из интерактивной подсказки PHP:
php > $utc = new DateTimeZone('UTC');
php > $pdt = new DateTimeZone('America/Los_Angeles');
php > $midnight_utc = new DateTime('today midnight', $utc);
php > $midnight_utc->setTimeZone($pdt);
php > echo $midnight_utc->format('Y-m-d H:i:s');
2011-04-08 17:00:00
(На данный момент это 9-е место в UTC, а в PDT - 8-е).