Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Yurko_San от Апрель 13, 2017, 12:25



Название: Как узнать количество рабочих дней в промежутке между двумя датами?
Отправлено: Yurko_San от Апрель 13, 2017, 12:25
Добрый день! Не подскажите, как узнать количество рабочих дней в промежутке между двумя датами, может API яндекса какой?


Название: Re: Как узнать количество рабочих дней в промежутке между двумя датами?
Отправлено: qate от Апрель 13, 2017, 14:36
на каком предприятии ? )


Название: Re: Как узнать количество рабочих дней в промежутке между двумя датами?
Отправлено: Yurko_San от Апрель 14, 2017, 07:08
Имеется в виду по России.


Название: Re: Как узнать количество рабочих дней в промежутке между двумя датами?
Отправлено: ssoft от Апрель 14, 2017, 08:24
Необходимо ввести понятие рабочий календарь, причем от страны к стране и даже от предприятия к предприятию он будет совершенно разным, так как нет предопределенного правила по формированию такого календаря.
Берем даты - считаем рабочие дни в соответствии с выбранным календарем.

Если имеется в виду, что хотелось бы считать все будничные дни рабочими, то считаем количество дней между датами

Код
C++ (Qt)
QDate first_date = ...;
QDate last_date = ...;
int day_count = first_date.daysTo( last_date );
int first_day_of_week = first_date.dayOfWeek();
int last_day_of_week = last_date.dayOfWeek();
int first_work_day_of_week = first_day_of_week > Qt::Friday ? first_day_of_week : Qt::Friday;
int last_work_day_of_week = last_day_of_week < Qt::Saturday ? last_day_of_week : Qt::Friday;
int work_day_of weak = last_work_day_of_week > first_work_day_of_week
   ? last_work_day_of_week - first_work_day_of_week
   : last_work_day_of_week - first_work_day_of_week +7;
 
int full_weak_count = day_count / 7;
int work_day_count =  full_weak_count * 5 + work_day_of weak;
 

Код на корректность не проверял, но что-то типа этого.