hugs vs. nhc98 in toClockTime

"Donn Cave" <[email protected]>
Newsgroups gmane.comp.lang.haskell.hugs.bugs
Message-ID <[email protected]>
Malcolm Wallace <[email protected]> wrote,
| The maintainers of nhc98, ghc, and Hugs, are working hard to remove
| any remaining differences in the libraries.  So, if you find such
| differences, do please report them to us.

The year value input to Time toClockTime is years since 1900, for
nhc98, but years since 0 for hugs.

As long as the value has to be represented in a 32 bit time_t,
the range of valid years doesn't overlap, so it may be possible
to support both usages.  Python does that.

I find another difference in toClockTime, which I think is really
kind of a bug.  I haven't looked at the source to see how it happens.
If I supply ctTZ value that is different from the local time zone,
it affects the result.  I think this is not really right, but what's
worse, the offset seems backwards.  I'm in PDT, -25200 -- that's
what comes out of toCalendarTime, -7 * 3600.  If I supply a CDT
offset, -5 * 3600 = -18000, the result time comes out 2 hours
_later_, calculated in PDT.  I could be confused about this - the
sun rises in the East, the way I figure it, and when it's 6 AM there,
it's 4 AM here - not 8 AM.

$ runhugs cal.hs 2003
CalendarTime{ctYear=2003,ctMonth=May,ctDay=1,ctHour=5,ctMin=45,ctSec=0,ctPicosec=0,ctWDay=Thursday,ctYDay=0,ctTZName="",ctTZ=-18000,ctIsDST=True}
-> Thu May  1 07:45:00 PDT 2003
-> CalendarTime{ctYear=2003,ctMonth=May,ctDay=1,ctHour=7,ctMin=45,ctSec=0,ctPicosec=0,ctWDay=Thursday,ctYDay=120,ctTZName="PDT",ctTZ=-25200,ctIsDST=True}

	Donn Cave, University Computing Services, University of Washington
	[email protected]
-----------------------------
main = do
        let calt = CalendarTime {
                        ctYear = 2003,
                        ctMonth = May,
                        ctDay = 1,
                        ctHour = 5,
                        ctMin = 45,
                        ctSec = 0,
                        ctPicosec = 0,
                        ctWDay = Thursday,
                        ctYDay = 0,
                        ctTZName = "",
                        ctTZ = -7 * 3600,
                        ctIsDST = True
                }
        putStrLn (show calt)
        let clt = toClockTime calt
        putStrLn ("-> " ++ (show clt))
        cal <- toCalendarTime clt
        putStrLn ("-> " ++ (show cal))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.