Урок 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 дней.
Вот так работают подпрограммы. Жду от вас комментариев, задавайте свои вопросы. Благодарю всех за поддержку и за то, что читаете. До встречи!