Лучший белый каталог сайтов и статей с прямыми ссылками
Каталог   Добавить ссылку   Добавить статью   Администрирование   Карта  
 

Добро пожаловать в белый каталог сайтов и статей elenaageeva.ru! В наш каталог вы можете совершенно бесплатно добавлять свои сайты и статьи без обратной ссылки.

Просьба добавлять сайты в соответствующую категорию! С уважением, администратор каталога..


Определение разности между датами юлианского календаря при помощи языка программирования PHP

Решение

Функция gregoriantojd() позволяет получить юлианскую дату для набора частей дат, после чего можно найти разность между датами, вычтя одну юлианскую дату из другой. Затем надо преобразовать части времени в секунды и вычесть одну из другой для определения разности во времени. Если разность во времени меньше нуля, то следует уменьшить разность в датах на единицу и скорректировать разность во времени применительно к предыдущему дню. Ниже приведен соответствующий код:

$diff_date = gregoriantojd($date_1_mo, $date_1_dy, $date_1_yr)- 
                    gregoriantojd($date_2_mo, $date_2_dy, $date_2_yr);
$diff_time = $date_1_hr * 3600 + $date_1_mn * 60 + $date_1_sc-
                    $date_2_hr * 3600 - $date_2_mn * 60 - $date_2_sc;
if ($diff_time < 0) {
      $diff_date --;
      $diff_time = 86400 - $diff_time; 
}

Обсуждение

Определение разности на основе юлианского представления дат позволяет работать за пределами диапазона секунд эпохи UNIX., а также учитывать переход на летнее время.

Если компоненты двух дат находятся в массивах:

// 7:32:56 pm 10 мая 1965 года
list($date_1_yr, $date_1_mo, $date_1_dy, $date_1_hr, $date_1_mn, $date_1_sc)=
                  array(1965, 5, 10, 19, 32, 56);
// 4:29:11 am 20 ноября 1962 года
list($date_2_yr, $date_2_mo, $date_2_dy, $date_2_hr, $date_2_mn, $date_2_sc)=
                  array(1962, 11, 20, 4, 29, 11);

$diff_date = gregoriantojd($date_1_mo, $date_1_dy, $date_1_yr)-
                           gregoriantojd($date_2_mo, $date_2_dy, $date_2_yr);
$diff_time = $date_1_hr * 3600 + $date_1_mn * 60 + $date_1_sc-
                           $date_2_hr * 3600 - $date_2_mn * 60 - $date_2_sc;
if ($diff_time < 0) {
         $diff_date--;
         $diff_time = 86400 - $diff_time;
}
$diff_weeks = floor($diff_date/7); $diff_date - = $diff_weeks * 7;
$diff_hours = floor($diff_time/3600); $diff_time - = $diff_hours * 3600;
$diff_minutes = floor($diff_time/60); $diff_time - = $diff_minutes * 60;

print "The two dates have $diff_weeks weeks, $diff_date days, ";
print "$diff_hours hours, $diff_minutes minutes, and $diff_time ";
print "seconds between them.";
The two dates have 128 weeks,    6 days,    15 hours,   3 minutes,
and 45 seconds between them.

Это способ получения разности во времени по показаниям часов, поэтому результат на час превышает результат предыдущего рецепта. 10 мая находится в пределах DST, а 11 ноября находится в пределах стандартного времени.

Функция gregoriantojd() – часть модуля calendar и поэтому доступна, только если PHP собран с его поддержкой (версия для Windows имеет встроенную поддержку данного расширения).

 



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

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

Добавить свой комментарий:

Имя:

E-Mail адрес:

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

Ваша оценка:

Введите число, которое Вы видите на картинке:
Информация
Источник:
http://www.сайты-всем.рф/files/php/opredelenie_raznosti_mezhdu_datami_uliansk_kalend.php
Автор: Игорь
Категории:
Оценка модератора: Нет
Оценка пользователей: Нет
Переходов на сайт:0
Переходов с сайта:0
 
Рейтинг@Mail.ru продвижение самостоятельно

Поисковое продвижение здесь.

Под ключ забор из профнастила у нас.

Каталог популярных сайтов 200stran.ru: показано число посетителей за сегодня, онлайн, из каждой страны и за всё время www.copyright.ru