Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7983 | leency | 1 | (* |
2 | BSD 2-Clause License |
||
3 | |||
4 | Copyright (c) 2018-2019, Anton Krotov |
||
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; |
||
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 |
||
59 | END time; |
||
60 | |||
61 | |||
62 | BEGIN |
||
63 | init |
||
64 | END UnixTime. |