2:- module(dates,[year/2, 3 month/2, 4 dofm/2, 5 decade/2, 6 yearBC/1,
7 yearAD/1]). 8
9
13
14month('january','01').
15month('jan','01').
16month('jan.','01').
17month('february','02').
18month('february','02').
19month('feb','02').
20month('feb.','02').
21month('march','03').
22month('mar','03').
23month('mar.','03').
24month('april','04').
25month('apr','04').
26month('apr','04').
27month('apr.','04').
28month('may','05').
29month('june','06').
30month('july','07').
31month('august','08').
32month('aug','08').
33month('aug.','08').
34month('september','09').
35month('sept','09').
36month('sep','09').
37month('sep.','09').
38month('sept.','09').
39month('october','10').
40month('oct','10').
41month('oct.','10').
42month('november','11').
43month('nov','11').
44month('nov.','11').
45month('december','12').
46month('dec','12').
47month('dec.','12').
48
49
53
54yearBC(bc).
55yearBC(bce).
56yearBC('b.c.').
57yearBC('b.c.e.').
58
59yearAD(ad).
60yearAD(ce).
61yearAD('a.d.').
62yearAD('c.e.').
63
64
68
69year(Atom,Year):-
70 atom_codes(Atom,[C1,C2,C3,C4]),
71 C1 > 48, C1 < 51,
72 C2 > 47, C2 < 58,
73 C3 > 47, C3 < 58,
74 C4 > 47, C4 < 58, !,
75 atom_codes(Year,[C1,C2,C3,C4]).
76
77year(Atom,Year):-
78 atom_codes(Atom,[39,C3,C4]),
79 C3 > 47, C3 < 58,
80 C4 > 47, C4 < 58, !,
81 atom_codes(Year,[49,57,C3,C4]).
82
83
87
88last_year(Year,Last):-
89 atom_codes(Year,[Y1,Y2,Y3,Y4]),
90 Y1 > 48, Y1 < 51,
91 Y2 > 47, Y2 < 58,
92 Y3 > 47, Y3 < 58,
93 Y4 > 47, Y4 < 58, !,
94 number_codes(NumberYear,[Y1,Y2,Y3,Y4]),
95 NumberLast is NumberYear - 1,
96 number_codes(NumberLast,Codes),
97 atom_codes(Last,Codes).
98
99last_year(X,X).
100
101
105
106century('1st', '00XX').
107century('first', '00XX').
108century('2nd', '01XX').
109century('second', '01XX').
110century('3rd', '02XX').
111century('third', '02XX').
112century('4th',' 03XX').
113century('fourth', '03XX').
114century('5th', '04XX').
115century('fifth', '04XX').
116century('6th', '05XX').
117century('sixth', '05XX').
118century('7th', '06XX').
119century('seventh', '06XX').
120century('8th', '07XX').
121century('eigth', '07XX').
122century('9th', '08XX').
123century('ninth', '08XX').
124century('10th', '09XX').
125century('tenth', '09XX').
126century('11th', '10XX').
127century('12th', '11XX').
128century('13th', '12XX').
129century('14th', '13XX').
130century('15th', '14XX').
131century('16th', '15XX').
132century('17th', '16XX').
133century('18th', '17XX').
134century('19th', '18XX').
135century('20th', '19XX').
136century('21th', '20XX').
137
138
142
143decade(Date,Decade):-
144 atom(Date),
145 atom_codes(Date,[39,C,48,115]), !, 146 atom_codes(Decade,[49,57,C,88]).
147
148decade(Date,Decade):-
149 atom(Date),
150 atom_codes(Date,[A,B,C,48,115]), !, 151 atom_codes(Decade,[A,B,C,88]).
152
153decade(Date,Decade):-
154 atom(Date),
155 atom_codes(Date,[A,B,C,48]), !, 156 atom_codes(Decade,[A,B,C,88]).
157
158
162
163dofm(Day,DID):- number(Day), !, day(Day,DID).
164dofm(Day,DID):- atom(Day), day(_,Day), !, DID = Day.
165dofm(Day,DID):- atom(Day), day(Day,DID), !.
166
167day(1,'01'). day('1st','01'). day('1','01').
168day(2,'02'). day('2nd','02'). day('2','02').
169day(3,'03'). day('3rd','03'). day('3','03').
170day(4,'04'). day('4th','04'). day('4','04').
171day(5,'05'). day('5th','05'). day('5','05').
172day(6,'06'). day('6th','06'). day('6','06').
173day(7,'07'). day('7th','07'). day('7','07').
174day(8,'08'). day('8th','08'). day('8','08').
175day(9,'09'). day('9th','09'). day('9','09').
176day(10,'10'). day('10th','10').
177day(11,'11'). day('11th','11').
178day(12,'12'). day('12th','12').
179day(13,'13'). day('13th','13').
180day(14,'14'). day('14th','14').
181day(15,'15'). day('15th','15').
182day(16,'16'). day('16th','16').
183day(17,'17'). day('17th','17').
184day(18,'18'). day('18th','18').
185day(19,'19'). day('19th','19').
186day(20,'20'). day('20th','20').
187day(21,'21'). day('21st','21').
188day(22,'22'). day('22nd','22').
189day(23,'23'). day('23rd','23').
190day(24,'24'). day('24th','24').
191day(25,'25'). day('25th','25').
192day(26,'26'). day('26th','26').
193day(27,'27'). day('27th','27').
194day(28,'28'). day('28th','28').
195day(29,'29'). day('29th','29').
196day(30,'30'). day('30th','30').
197day(31,'31'). day('31st','31')