quek / simple-date-time

date and time library for common lisp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Time-zone in to-universal-time

tkych opened this issue · comments

Hello, I like & use simple-date-time library for its nice simplicity.
However, in the following code something wrong is occurring:

(- (encode-universal-time 0 0 0 1 1 2000 0)
   (simple-date-time:to-universal-time
    (simple-date-time:from-string "Sat, 01 Jan 2000 00:00:00 GMT")))
=> 32400

I think in function to-universal-time at date-time.lisp, encode-universal-time needs time-zone.
Because the default value of time-zone in encode-universal-time depends on system environment,
and 32400 = (* 9 60 60), 9 is JST offset.

c.f. http://clhs.lisp.se/Body/f_encode.htm , last example.

Thank you for your report.

I add *default-timezone*.

(defparameter *default-timezone*
  (- (car (last (multiple-value-list (decode-universal-time (get-universal-time))))))
  "Default timezone. GMT is 0. JST is 9. EST is -5.")
(- (encode-universal-time 0 0 0 1 1 2000 0)
   (simple-date-time:to-universal-time
    (simple-date-time:from-string "Sat, 01 Jan 2000 00:00:00 GMT")))
;;⇒ 0
(- (encode-universal-time 0 0 0 1 1 2000 0)
   (simple-date-time:to-universal-time
    (simple-date-time:from-string "Sat, 01 Jan 2000 00:00:00 GMT" :timezone 0)
    0))
;;⇒ 0
(- (encode-universal-time 0 0 9 1 1 2000 -9)
   (simple-date-time:to-universal-time
    (simple-date-time:from-string "Sat, 01 Jan 2000 00:00:00 GMT")))
;;⇒ 0
(- (encode-universal-time 0 0 0 1 1 2000 -9)
   (simple-date-time:to-universal-time
    (simple-date-time:from-string "Sat, 01 Jan 2000 00:00:00 +0900")))
;;⇒ 0

これで正しいふるいまだと思いますか?

Thank you for quick fixes.

P.S. ばっちしです。

Thanks, よかったです m(_ _)m