module Date
export Year, Month, Day, Hour, LeapYear, Minute, Second, DayWeek, NameDayWeek, NameMonth
function LeapYear (y : int) : boolean
var lp := false
if y mod 4 = 0 then
lp := true
if y mod 100 = 0 then
lp := false
if y mod 400 = 0 then
lp := true
if y mod 4000 = 0 then
lp := false
if (y - 200) mod 900 = 0 or (y + 600) mod 900 = 0 then
lp := true
end if
end if
end if
end if
end if
result lp
end LeapYear
function Year : int
var x := Time.Sec
var year := 1970
loop
var leap := 0
if LeapYear (year) then
leap := 1
end if
exit when x - (365 + leap) * 24 * 60 * 60 < 0
x -= (365 + leap) * 24 * 60 * 60
year += 1
end loop
result year
end Year
function yeardays : int
var x := Time.Sec
var year := 1970
loop
var leap := 0
if LeapYear (year) then
leap := 1
end if
exit when x - (365 + leap) * 24 * 60 * 60 < 0
x -= (365 + leap) * 24 * 60 * 60
year += 1
end loop
result x div 60 div 60 div 24 + 1
end yeardays
function Month : int
var month, day, dayOfWeek, hour, minute, second, blank : int
Time.SecParts (Time.Sec, day, month, blank, dayOfWeek, hour, minute, second)
result month
end Month
function NameMonth : string
var months : array 1 .. 12 of string := init ("January", "February", "March", "April", "May", "June", "July", "August", "September", "Octobre", "November", "December")
result months (Month)
end NameMonth
function Day : int
var month, day, dayOfWeek, hour, minute, second, blank : int
Time.SecParts (Time.Sec, day, month, blank, dayOfWeek, hour, minute, second)
result day
end Day
function Hour : int
var month, day, dayOfWeek, hour, minute, second, blank : int
Time.SecParts (Time.Sec, day, month, blank, dayOfWeek, hour, minute, second)
result hour
end Hour
function Minute : int
var month, day, dayOfWeek, hour, minute, second, blank : int
Time.SecParts (Time.Sec, day, month, blank, dayOfWeek, hour, minute, second)
result minute
end Minute
function Second : int
var month, day, dayOfWeek, hour, minute, second, blank : int
Time.SecParts (Time.Sec, day, month, blank, dayOfWeek, hour, minute, second)
result second
end Second
function DayWeek : int
var month, day, dayOfWeek, hour, minute, second, blank : int
Time.SecParts (Time.Sec, day, month, blank, dayOfWeek, hour, minute, second)
result dayOfWeek
end DayWeek
function NameDayWeek : string
var days : array 1 .. 7 of string (10) := init ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
result days (DayWeek)
end NameDayWeek
end Date
|