Home → Php →

Подсчет количества дней между двумя датами

Опубликовано в сб, 07/26/2014 - 17:30

Где может пригодиться?

Если вы решили осуществить подсчет количества дней между двумя датами, например, вывести в футерной части сайта количество дней, отражающих возраст вашего сайта/блога. А решение воспользоваться заурядным форматом - "2012г. - 2014г." вам не особо нравится, вы ведь натура творческая, отсюда и подход должен быть оригинальным. Поэтому вы решили сделать вывод вида: "Нам уже 711 дней!", смотрится неординарно, а значит - это то, что вам нужно.

В реализации данного вывода нет ничего сложного, единственный нюанс, с которым я повозился, осуществить склонение слова "день", сайт то с каждым днем становится старше на один день. А запись вида: "Нам 709 дня" меня не особо привлекала. Поэтому было принято решение склонять слово "день" исходя из численного значения.

От теории к практике


<?php

     // Преобразуем строковое значение даты отсчета, в дату, с помощью функции strtotime. Получаем дату в формате GNU
     
$reference_date = strtotime("2013-12-25");
     
// Сегодняшняя дата
     
$now = strtotime("now");
     
// Получаем количество дней между установленной датой и сегодняшним днем
     
$date = floor (($now - $reference_date)/86400);

?>

На данном этапе, в переменной $date у нас количество дней между заданными датами. Осталось реализовать склонение слова "день" относительно числового значения.


<?php
function declination($count){
     
     
// Задаем в переменные три возможные формы склонения
    
$form1 = "день";
    
$form2 = "дня";
    
$form3 = "дней";

     // Используем деление по модулю
    
$count = abs($count) % 100;
    
$lcount = $count % 10;

     // Сравниваем значение, отдаем нужную форму
    
if ($count >=11 && $count <=19 ) return($form3);
    if (
$lcount >= 2 && $lcount <= 4 ) return($form2);
    if (
$lcount == 1) return($form1);

    // Во всей других случаях отдаем третью форму
    
return $form3;

}
?>

Осталось скомпоновать и вывести


<?php
     
     
print "Моему блогу уже - " . $date . " " . declination($date);

?>

В итоге получаем - "Моему блогу уже - 123 дня", а через два дня "Моему блогу уже - 125 дней".

дата
подсчет
количество
склонение
деление по модулю

Menu

  • Главная
  • О блоге

Category

Drupal
(15)
Php
(4)
Верстка
(2)
Разное
(2)
lakshtori.ru (Лакштори,luckshtory) - бренд мошенников
© by Conocube / Блогу - 4325 дней