Вычислите процент прошедшего дня

немного странный вопрос, но надеюсь, что кто-то может помочь.

по существу, если время было 12pm, то прошедший процент будет 50%, 6am будет 25% и 16pm будет 75%.

учитывая текущее время, как вы могли бы определить количество дней, которые уже прошли?

5 ответов


предполагая, что вы можете получить текущее время суток, было бы довольно легко рассчитать процент прошедшего дня.

percentage = (hours / 24 + minutes / (60 * 24)) * 100

24часа на 100% Итак, 24 / currentTime = результат 100 / результат = % ;)


gettimeofday (true) возвращает количество секунд, прошедших с полуночи как поплавок (я думаю), поэтому вы хотите: gettimeofday(true)/(60*60*24). Умножьте на 100, чтобы получить процент.

EDIT: на самом деле, gettimeofday возвращает количество секунд, прошедших с начала эпохи, поэтому вам нужно вычесть midnight:

$midnight = strtotime('00:00');
$epochseconds = gettimeofday(true);
$timeofdayseconds = $epochseconds - $midnight;
$timepercent = $timeofdayseconds/(60*60*24)*100;

принятый ответ беспокоит меня по многим причинам, включая отношение к календарю реальной жизни. Лично я, вероятно, сделал бы это:

<?php
$start = strtotime("today");
$end = strtotime("tomorrow");
$now = time();
$secondstoday = $end - $start;
$secondselapsed = $now - $start;
$percentage = ($secondselapsed / $secondstoday ) * 100;

printf('%.2f%% of the day has passed (%d out of %d seconds)', $percentage, $secondselapsed, $secondstoday);

результат:

72.22% of the day has passed (62402 out of 86400 seconds)

затем вы можете расширить его еще дальше, сделав функцию и изменив диапазон от "today" и "tomorrow" к чему-то еще.


Я не знаю php, но есть ли способ получить текущую ведьму даты, я думаю :P можете ли вы извлечь часы из этого или минуты, насколько точно вы хотите, чтобы это было?, Текущие часы / 24 * 100: P текущие минуты / 1440 * 100