[Rd] Date conversion with as.POSIXct and as.POSIXlt (PR#9196)
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Fri Sep 1 12:08:38 CEST 2006
erich.neuwirth at univie.ac.at writes:
> Full_Name: Erich Neuwirth
> Version: 2.3.1
> OS: Windows XP, Linux
> Submission from: (NULL) (131.130.135.167)
>
>
> Converting Sys.Date() to a POSIX compliant time type in different ways
> produces inconsistent results:
> > Sys.date()
> [1] "2006-09-01"
> > as.POSIXct(Sys.Date())
> [1] "2006-09-01 02:00:00 CEST"
> > as.POSIXlt(Sys.Date())
> [1] "2006-09-01"
> > as.POSIXct(as.POSIXlt(Sys.Date()))
> [1] "2006-09-01 01:00:00 CEST"
>
> Applying as.POSIXct directly or first applying as.POSIXlt and then
> applying as.POSIXct produces different results.
>
> This happens on Linux with timezone "CEST"
> > Sys.time()
> [1] "2006-09-01 11:03:36 CEST"
> and on Windows with timezone "W. Europe Daylight Time"
> > Sys.time()
> [1] "2006-09-01 11:11:15 W. Europe Daylight Time"
Or,
> as.POSIXct(Sys.Date()) - as.POSIXlt(Sys.Date())
Time difference of 1 hours
> as.POSIXct(Sys.time()) - as.POSIXlt(Sys.time())
Time difference of -0.0003409386 secs
Whereas
> Sys.putenv("TZ"="GMT")
> as.POSIXct(Sys.Date()) - as.POSIXlt(Sys.Date())
Time difference of 0 secs
and
> Sys.putenv("TZ"="EST")
> as.POSIXct(Sys.Date()) - as.POSIXlt(Sys.Date())
Time difference of -5 hours
So the difference is that as.POSIXct works in GMT whereas as.POSIXlt
works in the local timezone w/o DST corrections, the point of the
latter likely being that
> as.POSIXlt(as.Date("2006-7-1"))-as.POSIXlt(as.Date("2006-1-1"))
Time difference of 181 days
comes out as an integer number of days.
BTW, the habit of format.POSIXlt dropping off the time when it is
exactly 01:00 in CEST (i.e. would have been midnight, save for
Daylight Savings Time) is a bit confusing too...
I'm not sure any of this is actual bugs (Brian will tell us soon
enough), but it does appear at least to be underdocumented.
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-devel
mailing list