[racket] srfi/19 UTC time

From: John Clements (clements at brinckerhoff.org)
Date: Wed May 22 02:40:52 EDT 2013

On May 21, 2013, at 10:05 PM, Lewis wrote:

> Thanks! I didn't know you could construct dates like that.
> 
> According to the docs, the #f argument should give UTC. Unfortunately
> on my machine it gives
> 
> (date* 0 0 12 22 5 2013 3 141 #f 43200 0 "NZST")
> 
> Which is local time for me. Perhaps this is a bug?

Doesn't look that way to me; I read it as 12:00 noon on May 22nd in your time zone, which I believe is the same moment as 0:00 midnight UTC.  

However, it also appears that by passing a #f to the seconds->date function, you can in fact have a UTC date if you prefer it:


#lang racket

(require racket/date)

(seconds->date (find-seconds 0 0 0 22 05 2013 #f) #f)

Best,

John Clements



> 
> On 22/05/2013, John Clements <clements at brinckerhoff.org> wrote:
>> 
>> On May 21, 2013, at 8:51 PM, Lewis wrote:
>> 
>>> When I use string->date in srfi/19, it defaults to my local time zone.
>>> I see from the documentation that one can use "~z" to denote the "time
>>> zone in RFC-822 style". A quick google of RFC-822 suggests "UT" is the
>>> correct abbreviation for UTC.
>>> 
>>> However
>>> 
>>> Welcome to Racket v5.3.4.
>>>> (require srfi/19)
>>>> (string->date "22/05/13/UT" "~d/~m/~y/~z")
>>> string->date: TIME-ERROR type bad-date-format-string: "~d/~m/~y/~z"
>>> context...:
>>>  /usr/lib/racket/collects/srfi/19/time.rkt:1532:0: tm:string->date
>>>  /usr/lib/racket/collects/srfi/19/time.rkt:1569:0: string->date
>>>  /usr/lib/racket/collects/racket/private/misc.rkt:87:7
>>> 
>>> So in short: how - given the day, month and year - can I construct a
>>> date object that's in UTC?
>> 
>> How important is it to you to use srfi/19?
>> 
>> The program below produces the date that you're looking for, if I understand
>> correctly:
>> 
>> 
>> #lang racket
>> 
>> (require racket/date)
>> 
>> (seconds->date (find-seconds 0 0 0 22 05 2013 #f))
>> 
>> 
>> 



Posted on the users mailing list.