Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Посчитать разницу между датами без учета выходных


Автор: Suppir 1.4.2014, 14:03
Добрый день.

Есть две строки:

$a = '28/03/2014';
$b = '31/03/2014';

Нужно посчитать разницу между этими двумя датами без учета выходных дней. Должно получиться, по идее, 2 дня (пятница и понедельник).

Подскажите, как проще всего сделать?



Автор: arto 1.4.2014, 14:49
perldoc Date::Manip и определить свой календарь выходных,
либо попробовать Date::Holidays.

Автор: Bulat 1.4.2014, 15:37
С помощью модуля Time::Local

Код

$epoch_seconds = timelocal($sec, $min, $hour, $dd, $mm, Syyyy);


Разница между первой датой и последней - общая разница в секундах и из этого вычитаешь дни(секунды) соответствующие выходным дням!

Автор: tzirechnoy 1.4.2014, 17:20
Это никак не сделать просто. Учитывая, что выходные у нас назначаются решэниями правительства и каждый год разные -- тебе нужно будет создать где-то БД выходных, и, что ещё хужэ, постоянно её обновлять.

На этом фоне вопросы алгоритмики такого действия, в общем, несущественны.

Автор: Suppir 1.4.2014, 21:46
Думаю, что праздниками можно пренебречь...

На c# код:


[code=c#]
DateTime start = new DateTime(2011,05,17);
            DateTime end = new DateTime(2011, 05, 31);
            int count = 0;
            while (start != end)
            {
                start =start.AddDays(1);
                if ((start.DayOfWeek != DayOfWeek.Saturday) && (start.DayOfWeek != DayOfWeek.Sunday)) count++;
            }
            Console.WriteLine(count);
            Console.ReadKey();
[/code]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)