По всем вопросам - пишите на эл.почтуКруглосуточно 24/7
We speak English

Урок 7.2. Дни между датами

Программа DDAYS с использованием подпрограмм на калькуляторе HP Prime: Идеально работает с периодом от 1901 до 2099

  • Мы знаем, что годы, которые не делятся на 400, не являются ВИСОКОСНЫМИ. Данная программа не принимает это во внимание. Если такие годы входят в вычисление, нужно будет вычитать один день вручную.

Источник: Руководство пользователя HP 12C - Hewlett Packard

// Описание подпрограмм
SUB1();
SUB2();
SUB3();

// Основная программа
EXPORT DDAYS(m1, d1, y1, m2, d2, y2)
BEGIN // ΔDYS HP 12C
  LOCAL x1, x2, z1, z2;
  x1 := SUB1(m1); x2 := SUB1(m2);
  z1 := SUB2(m1, y1); z2 := SUB2(m2, y2);
  RETURN SUB3(y2, m2, d2, z2, x2)-
  SUB3(y1, m1, d1, z1, x1);
END;

SUB1(X)
BEGIN
  IF X ≤ 2 THEN
    RETURN 0;
    ELSE
    RETURN IP(.4*X+2.3);
  END;
END;

SUB2(X, Y)
BEGIN
  IF X ≤ 2 THEN
    RETURN Y-1;
    ELSE
    RETURN Y;
  END;
END;

SUB3(Y, M, D, Z, X)
BEGIN
  RETURN 365*Y+31 * (M-1) + D+IP(Z/4) - X;
END;

Примеры:

Дни между датами:

  • С 3 июля 1985 до 28 февраля 1995 будет 3.527 дней
  • С 14 марта 1977 до 17 ноября 2013 будет 13.397 дней
  • С 10 декабря 2010 до 30 июня 2014 будет 1.298 дней
  • С 5 января 2015 до 19 марта 2227 калькулятор выдает 77.506 дней, НО программа считает 2100 и 2200 годы как високосные, которые таковыми не являются. Вычтите 2, чтобы получить верный ответ - 77.504 дней.

Вот так работают подпрограммы. Жду от вас комментариев, задавайте свои вопросы. Благодарю всех за поддержку и за то, что читаете. До встречи!