-
Notifications
You must be signed in to change notification settings - Fork 0
/
DateTime.pas
49 lines (43 loc) · 1.42 KB
/
DateTime.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
///Проверяет, является ли год високосным
function IsLeapYear(year: integer): boolean;
begin
Assert(year > 0);
if (year mod 4 = 0) and (year mod 100 != 0) or (year mod 400 == 0):
result := true;
else:
result := false;
end;
///Получает два дня, проверяет, какой из них ближе к Новому году
///(Возвращает 1, если первый, и 2, если второй
function LaterInYear(firstDay, firstMonth, secondDay, secondMonth: integer): integer;
begin
if firstMonth > secondMonth then
result := 1
else if firstMonth < secondMonth then
result := 2
else if firstDay > secondDay then
result := 1
else
result := 2;
end;
///Определяет количество дней в заданном году
function DaysInYear(year: integer): integer;
begin
Assert(year > 0);
result := IsLeapYear(year) ? 366 : 365;
end;
///Определяет количество дней между двумя годами включительно
function DaysInYearRange(firstYear, secondYear: integer): integer;
begin
Assert(firstYear > 0);
Assert(secondYear > 0);
result := 0;
for var i := firstYear to secondYear do
begin
result += DaysInYear(i);
end;
end;
///Возвращает число секунд в данном количестве часов
function SecondsInHours(h: integer): integer := h * 3600;
begin
end.