PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 105


$bree = 361535725,      # 04 35 25 16 июня 1981 года $nat = 96201950,      # 03 45 50 18 января 1973 года

$difference = $bree - $nat,

print There were Sdifference seconds between Nat and Bree\n ,

There were 266802575 seconds between Nat and Bree

Sseconds = Sdifference % 60,

Sdifference     =     (Sdifference - Sseconds) / 60

Sminutes = Sdifference % 60,

Sdifference     =     (Sdifference - Sminutes) / 60,

Shours  = Sdifference $ 24,

Sdifference     =     (Sdifference - Shours)  / 24,

Sdays    = Sdifference % 7,

$weeks  = (Sdifference - Sdays)  / 7,

print (Sweeks weeks, Sdays days, Shours Sminutes $seconds)\n , (441 weeks, 0 days, 23: 49: 35)

Функции модуля Date::Calc упрощают подобные вычисления. Delta_Days возвращает количество дней между двумя датами. Даты передаются ей в виде списка «год/месяц/деиь» в хронологическом порядке, то есть начиная с более ранней.

> Смотри также---------------------------------------------------------------------------------------------

Документация по стандартному модулю Date::Calc с CPAN.

3.6. Определение номера недели или дня недели/месяца/года

Проблема

Имеется дата в секундах с начала эпохи или в виде отдельных компонентов — года, месяца и т. д. Требуется узнать, на какой номер недели или день недели/ме­сяца/года она приходится.

Решение

Если дата выражена в секундах с начала эпохи, день года, день месяца или неде­ли возвращается функцией localtime. Номер недели легко рассчитывается по дню года.


3.6. Определение номера недели или дня недели/месяца/года    103

(SMONTHDAY,   $WEEKDAY,   $YEARDAY)   =  (localtime $DATE)   [3,6,7], $WEEKNUM =  mt($YEARDAY / 7)  + 1,

Отдельные компоненты полного времени можно преобразовать в число секунд с начала эпохи (см. рецепт 3.3) и воспользоваться приведенным выше решением. Возможен и другой вариант — применение функций Day_of_Week,   Week_Number и Day_of_Year модуля Date::Calc с CPAN:

use Date Calc qw(Day_of_Week Week_Number Day_of_Year),

# Исходные величины - $year, Smonth и $day




- Начало -  - Назад -  - Вперед -