Time library discussion (reprise)

Simon Marlow simonmar at microsoft.com
Thu Nov 13 13:57:08 EST 2003


I've now implemented this proposal, modulo the calendar calculations.
The implementation is here:

  http://www.haskell.org/~simonmar/time/NewTime.hsc

Compile like so with GHC 6.0.1:

  $ hsc2hs NewTime.hsc
  $ ghc -c NewTime.hs

The code borrows heavily from the existing System.Time imlementation.

Haddock docs here:

  http://www.haskell.org/~simonmar/time/NewTime.html

It's quite possible I've screwed up the implementation somewhere, so
please take a look.

Examples:

*NewTime> t <- getClockTime
*NewTime> print t     
1068731162437251000000
*NewTime> clockTimeToCalendarTime t >>= print
Thu Nov 13 13:45:50 GMT 2003
*NewTime> clockTimeToUTCTime t
Thu Nov 13 13:45:50 UTC 2003
*NewTime> clockTimeToTAITime t
Thu Nov 13 13:46:02 TAI 2003

see what happens around a leap second:

*NewTime> let t = CalendarTime {ctYear=1998, ctMonth=11, ctDay=31,
ctHour=23, ctMin=59, ctSec=59, ctPicosec=0, ctTZ=utcTimezone}
*NewTime> t 
Thu Dec 31 23:59:59 UTC 1998
*NewTime> clockTimeToUTCTime (fromJust (calendarTimeToClockTime t))
Thu Dec 31 23:59:59 UTC 1998

forward one second:

*NewTime> clockTimeToUTCTime (fromJust (calendarTimeToClockTime t) + 1 *
10^12) 
Thu Dec 31 23:59:59 UTC 1998

forward 2 seconds:

*NewTime> clockTimeToUTCTime (fromJust (calendarTimeToClockTime t) + 2 *
10^12)
Fri Jan  1 00:00:00 UTC 1999

Cheers,
	Simon


More information about the Libraries mailing list