phurst@1974: datatype day_of_week = Sunday | Monday | Tuesday | Wednesday | Thursday |
phurst@1974: Friday | Saturday
phurst@1974:
phurst@1974: val show_day_of_week = mkShow (fn dow => case dow of
phurst@1974: Sunday => "Sunday"
phurst@1974: | Monday => "Monday"
phurst@1974: | Tuesday => "Tuesday"
phurst@1974: | Wednesday => "Wednesday"
phurst@1974: | Thursday => "Thursday"
phurst@1974: | Friday => "Friday"
phurst@1974: | Saturday => "Saturday")
phurst@1974:
phurst@1974: fun dayOfWeekToInt dow = case dow of
phurst@1974: Sunday => 0
phurst@1974: | Monday => 1
phurst@1974: | Tuesday => 2
phurst@1974: | Wednesday => 3
phurst@1974: | Thursday => 4
phurst@1974: | Friday => 5
phurst@1974: | Saturday => 6
phurst@1974:
phurst@1974: fun intToDayOfWeek i = case i of
phurst@1974: 0 => Sunday
phurst@1974: | 1 => Monday
phurst@1974: | 2 => Tuesday
phurst@1974: | 3 => Wednesday
phurst@1974: | 4 => Thursday
phurst@1974: | 5 => Friday
phurst@1974: | 6 => Saturday
phurst@1974: | n => error Invalid day of week {[n]}
phurst@1974:
phurst@1974: val eq_day_of_week = mkEq (fn a b => dayOfWeekToInt a = dayOfWeekToInt b)
phurst@1974:
phurst@1974:
phurst@1974: datatype month = January | February | March | April | May | June | July |
phurst@1974: August | September | October | November | December
phurst@1974:
phurst@1974: val show_month = mkShow (fn m => case m of
phurst@1974: January => "January"
phurst@1974: | February => "February"
phurst@1974: | March => "March"
phurst@1974: | April => "April"
phurst@1974: | May => "May"
phurst@1974: | June => "June"
phurst@1974: | July => "July"
phurst@1974: | August => "August"
phurst@1974: | September => "September"
phurst@1974: | October => "October"
phurst@1974: | November => "November"
phurst@1974: | December => "December")
phurst@1974:
phurst@1974: type t = {
phurst@1972: Year : int,
phurst@1974: Month : month,
phurst@1972: Day : int,
phurst@1972: Hour : int,
phurst@1972: Minute : int,
phurst@1972: Second : int
phurst@1972: }
phurst@1972:
phurst@1974: fun monthToInt m = case m of
phurst@1974: January => 0
phurst@1974: | February => 1
phurst@1974: | March => 2
phurst@1974: | April => 3
phurst@1974: | May => 4
phurst@1974: | June => 5
phurst@1974: | July => 6
phurst@1974: | August => 7
phurst@1974: | September => 8
phurst@1974: | October => 9
phurst@1974: | November => 10
phurst@1974: | December => 11
phurst@1973:
phurst@1974: fun intToMonth i = case i of
phurst@1974: 0 => January
phurst@1974: | 1 => February
phurst@1974: | 2 => March
phurst@1974: | 3 => April
phurst@1974: | 4 => May
phurst@1974: | 5 => June
phurst@1974: | 6 => July
phurst@1974: | 7 => August
phurst@1974: | 8 => September
phurst@1974: | 9 => October
phurst@1974: | 10 => November
phurst@1974: | 11 => December
phurst@1974: | n => error Invalid month number {[n]}
phurst@1973:
phurst@1974: val eq_month = mkEq (fn a b => monthToInt a = monthToInt b)
phurst@1974:
phurst@1974:
phurst@1974: fun toTime dt : time = fromDatetime dt.Year (monthToInt dt.Month) dt.Day
phurst@1972: dt.Hour dt.Minute dt.Second
phurst@1972:
phurst@1972: fun fromTime t : datetime = {
phurst@1972: Year = datetimeYear t,
phurst@1974: Month = intToMonth (datetimeMonth t),
phurst@1972: Day = datetimeDay t,
phurst@1972: Hour = datetimeHour t,
phurst@1972: Minute = datetimeMinute t,
phurst@1972: Second = datetimeSecond t
phurst@1972: }
phurst@1972:
phurst@1974: fun format fmt dt : string = timef fmt (toTime dt)
phurst@1974:
phurst@1974: fun dayOfWeek dt : day_of_week =
phurst@1974: case datetimeDayOfWeek (toTime dt) of
phurst@1974: 0 => Sunday
phurst@1974: | 1 => Monday
phurst@1974: | 2 => Tuesday
phurst@1974: | 3 => Wednesday
phurst@1974: | 4 => Thursday
phurst@1974: | 5 => Friday
phurst@1974: | 6 => Saturday
phurst@1974: | n => error Illegal day of week {[n]}
phurst@1974:
phurst@1972:
phurst@1972: val now : transaction datetime =
phurst@1972: n <- now;
phurst@1972: return (fromTime n)