Php while цикл для отображения 24 часа с 01:00:00 до 23:00:00 с использованием даты и mktime - PullRequest
1 голос
/ 19 июля 2011

Мне нужен скрипт php, который показывает все часы с 01:00:00 до 24:00: 00.
Пока я сделал это: (этот код находится в цикле while)

  $hour++;
  $hour_after_midnight = date('G:i:s',mktime(1,0,0,1,1,2011));
  $next_hour = date($this_hour,strtotime('+1 hour'));
  echo $next_hour;

но приведенный выше код возвращает:

1: 00: 00 x24times

Я думаю, что используемая мной функция даты неправильна.помощь будет принята с благодарностью

Ответы [ 3 ]

4 голосов
/ 19 июля 2011
<?php
$hour = 0;
while($hour++ < 24)
{
    $timetoprint = date('G:i:s',mktime($hour,0,0,1,1,2011));
    echo $timetoprint;
}
?>

Это будет так, как вы пытаетесь это сделать? Я предполагаю, что вам нужна переменная даты, чтобы быть в этой форме по причине. В противном случае комментарии - это путь.

1 голос
/ 19 июля 2011

Попробуйте

$this_hour = $next_hour; 

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

Возможно, вы захотите сделать это с $hour++, но эта переменная не используется в коде рядом с этим единственным оператором.

Но этот ответ может быть настолько же неправильным, как и большая часть вашего кода выглядит неправильно (при полном уважении), если вы лучше опишите свою реальную проблему, с которой вы столкнулись во время кодирования, пользователи здесь, на SO, могут дать лучшие ответы, см. Также ответ Edgar Velasquez Lim , который имеет некоторые другиеПример кода.

Например, есть ли у вас проблемы с пониманием функции date, mktime или strtotime, для которой возникают проблемы с бетоном?

У вас есть проблемы, чтобы понять, что происходит?с переменными, пока вы манипулируете ими в цикле?

0 голосов
/ 19 июля 2011

Попробуйте это:

$iTimestamp = mktime(1,0,0,1,1,2011);
for ($i = 1; $i < 24; $i++) {
    echo date('H:i:s', $iTimestamp) . "\n<br />";
    $iTimestamp += 3600;
}
...