
On Tue, Apr 21, 2009 at 10:31 AM, Ashley Yakeley
Magnus Therning wrote:
On Mon, Apr 20, 2009 at 11:27 PM, Deniz Dogan
wrote: Hi
Is there a bug in the old-locale package? I tried the following simple program:
import Data.Time import System.Locale
main = do time <- getCurrentTime putStrLn $ formatTime defaultTimeLocale rfc822DateFormat time
The above program prints:
Mon, d Apr 2009 15:23:56 UTC
Notice "Mon, d", where "d" should be the day of the month. Looking at the source code in the package, I see:
rfc822DateFormat = "%a, %_d %b %Y %H:%M:%S %Z"
So what's up with %_d?
That looks like an error to me. According to the date(1) manpage, an underbar pads with spaces.
% date +"%a, %_d %b %Y %H:%M:%S %Z" Tue, 21 Apr 2009 00:25:50 SGT
It looks like old-locale and time have different ideas of date formats. Possibly this should be fixed in the time package.
From reading the date(1) manpage, there are some other parts of the
old-time handles the padding by eating it. The attached patch does the same for the time package. format-spec not supported. But we at least parse the format-specs we ship with. Antoine