1

Пример:
A1 = 5/5/2004
B1 = 29/12/2004
C1 = 01.01.2003
D1 = 21/11/2004

Я хочу выяснить, сколько дней между A и B также попадают между C и D. Я не могу понять, какой будет формула для решения этой проблемы. Может кто-нибудь, пожалуйста, помогите?

1 ответ1

2
  1. Сначала найдите нижнюю и верхнюю границы пересечения
    • Нижняя граница пересечения ( IL) является самой высокой из min([a;b]) и min([c;d]) ;
    • Верхняя граница пересечения ( IU) является самой низкой из max([a;b]) и max([c;d]) ;
  2. Затем посчитайте дни в диапазоне [IL;IU] , предполагая, что это ноль, если IL>IU

    IL=max( min(a,b) , min(c,d) )
    IU=min( max(a,b) , max(c,d) )
    DAYSCOUNT= min( 0, IU-IL+1)`
    

После замены получаем

 min( 0, min(max(a,b), max(c,d)) - max(min(a,b), min(c,d)) + 1 )`

«+1» в подсчетах дней необходим или не зависит от того, что вы подразумеваете под "между" или "внутри", включая границы или нет. Есть три случая, очевидно.

  • +1 - в диапазоне (включая границы)
  • +0 - от начальной даты до конечной даты
  • -1 - между этими датами, но не включительно

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .