Subversion Repositories Kolibri OS

Rev

Rev 7597 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7597 akron1 1
(*
2
    BSD 2-Clause License
3
 
7693 akron1 4
    Copyright (c) 2018, 2019, Anton Krotov
7597 akron1 5
    All rights reserved.
6
*)
7
 
8
MODULE UNIXTIME;
9
 
10
 
11
VAR
12
 
13
    days: ARRAY 12, 31, 2 OF INTEGER;
14
 
15
 
16
PROCEDURE init;
17
VAR
18
    i, j, k, n0, n1: INTEGER;
19
BEGIN
20
 
21
    FOR i := 0 TO 11 DO
22
        FOR j := 0 TO 30 DO
23
            days[i, j, 0] := 0;
24
            days[i, j, 1] := 0;
25
        END
26
    END;
27
 
28
    days[ 1, 28, 0] := -1;
29
 
30
    FOR k := 0 TO 1 DO
31
        days[ 1, 29, k] := -1;
32
        days[ 1, 30, k] := -1;
33
        days[ 3, 30, k] := -1;
34
        days[ 5, 30, k] := -1;
35
        days[ 8, 30, k] := -1;
36
        days[10, 30, k] := -1;
37
    END;
38
 
39
    n0 := 0;
40
    n1 := 0;
41
    FOR i := 0 TO 11 DO
42
        FOR j := 0 TO 30 DO
43
            IF days[i, j, 0] = 0 THEN
44
                days[i, j, 0] := n0;
45
                INC(n0)
46
            END;
47
            IF days[i, j, 1] = 0 THEN
48
                days[i, j, 1] := n1;
49
                INC(n1)
50
            END
51
        END
52
    END
53
 
54
END init;
55
 
56
 
57
PROCEDURE time* (year, month, day, hour, min, sec: INTEGER): INTEGER;
7693 akron1 58
    RETURN ((year - 1970) * 365 + days[month - 1, day - 1, ORD(year DIV 4 = 0)] + (year - 1969) DIV 4) * 86400 + hour * 3600 + min * 60 + sec
7597 akron1 59
END time;
60
 
61
 
62
BEGIN
63
    init
64
END UNIXTIME.