Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посчитать разницу между датами без учета выходных 
:(
    Опции темы
Suppir
Дата 1.4.2014, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Добрый день.

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

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

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

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



PM MAIL   Вверх
arto
Дата 1.4.2014, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



perldoc Date::Manip и определить свой календарь выходных,
либо попробовать Date::Holidays.
PM MAIL ICQ   Вверх
Bulat
Дата 1.4.2014, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



С помощью модуля Time::Local

Код

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


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


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
tzirechnoy
Дата 1.4.2014, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



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

На этом фоне вопросы алгоритмики такого действия, в общем, несущественны.
PM MAIL   Вверх
Suppir
Дата 1.4.2014, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Думаю, что праздниками можно пренебречь...

На 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]


Это сообщение отредактировал(а) Suppir - 1.4.2014, 21:47
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.