In R 2.0.1 under Windows 2000, at least in some cases, as.POSIXct adds one to the date: > March1.1959.POSIXct <- as.POSIXct("1959-03-01") > March1.1959.POSIXlt <- as.POSIXlt("1959-03-01") > > (Mar2.59 <- as.Date(March1.1959.POSIXct)) [1] "1959-03-02" > as.Date(March1.1959.POSIXlt) [1] "1959-03-01" > > as.Date(as.POSIXct(Mar2.59)) [1] "1959-03-02" > as.Date(as.POSIXct(as.character(Mar2.59))) [1] "1959-03-03" > print(POSIX.i <- as.POSIXct("1959-03-01")) [1] "1959-03-01 Pacific Standard Time" > for(i in 1:11){ + print(date.i <- as.Date(POSIX.i)) + print(POSIX.i <- as.POSIXct(as.character(date.i))) + } [1] "1959-03-02" [1] "1959-03-02 Pacific Standard Time" [1] "1959-03-03" [1] "1959-03-03 Pacific Standard Time" [1] "1959-03-04" [1] "1959-03-04 Pacific Standard Time" [1] "1959-03-05" [1] "1959-03-05 Pacific Standard Time" [1] "1959-03-06" [1] "1959-03-06 Pacific Standard Time" [1] "1959-03-07" [1] "1959-03-07 Pacific Standard Time" [1] "1959-03-08" [1] "1959-03-08 Pacific Standard Time" [1] "1959-03-09" [1] "1959-03-09 Pacific Standard Time" [1] "1959-03-10" [1] "1959-03-10 Pacific Standard Time" [1] "1959-03-11" [1] "1959-03-11 Pacific Standard Time" [1] "1959-03-12" [1] "1959-03-12 Pacific Standard Time" > Comments? Thanks for your help. spencer graves
Spencer Graves <spencer.graves <at> pdf.com> writes: : : In R 2.0.1 under Windows 2000, at least in some cases, as.POSIXct : adds one to the date: : : > March1.1959.POSIXct <- as.POSIXct("1959-03-01") : > March1.1959.POSIXlt <- as.POSIXlt("1959-03-01") : > : > (Mar2.59 <- as.Date(March1.1959.POSIXct)) : [1] "1959-03-02" : > as.Date(March1.1959.POSIXlt) : [1] "1959-03-01" : > : > as.Date(as.POSIXct(Mar2.59)) : [1] "1959-03-02" : > as.Date(as.POSIXct(as.character(Mar2.59))) : [1] "1959-03-03" : > print(POSIX.i <- as.POSIXct("1959-03-01")) : [1] "1959-03-01 Pacific Standard Time" : > for(i in 1:11){ : + print(date.i <- as.Date(POSIX.i)) : + print(POSIX.i <- as.POSIXct(as.character(date.i))) : + } : [1] "1959-03-02" : [1] "1959-03-02 Pacific Standard Time" : [1] "1959-03-03" : [1] "1959-03-03 Pacific Standard Time" : [1] "1959-03-04" : [1] "1959-03-04 Pacific Standard Time" : [1] "1959-03-05" : [1] "1959-03-05 Pacific Standard Time" : [1] "1959-03-06" : [1] "1959-03-06 Pacific Standard Time" : [1] "1959-03-07" : [1] "1959-03-07 Pacific Standard Time" : [1] "1959-03-08" : [1] "1959-03-08 Pacific Standard Time" : [1] "1959-03-09" : [1] "1959-03-09 Pacific Standard Time" : [1] "1959-03-10" : [1] "1959-03-10 Pacific Standard Time" : [1] "1959-03-11" : [1] "1959-03-11 Pacific Standard Time" : [1] "1959-03-12" : [1] "1959-03-12 Pacific Standard Time" : > : Comments? I am not sure that the code really speaks for itself. What is the bug? Note that as.Date converts dates relative to GMT, not the current time zone. If you want to convert a POSIXct date to a Date date relative to the current timezone you can convert it to character first. RNews 4/1 has a table that provides a number of such idioms.
Hi, Gabor: Of course: time zone vs. GMT. Next question: Might a simple example that illustrates this be added to the help file for "as.POSIXct", and if yes, what should be done to make that happen? Thanks. spencer graves Gabor Grothendieck wrote:>Spencer Graves <spencer.graves <at> pdf.com> writes: > >: >: In R 2.0.1 under Windows 2000, at least in some cases, as.POSIXct >: adds one to the date: >: >: > March1.1959.POSIXct <- as.POSIXct("1959-03-01") >: > March1.1959.POSIXlt <- as.POSIXlt("1959-03-01") >: > >: > (Mar2.59 <- as.Date(March1.1959.POSIXct)) >: [1] "1959-03-02" >: > as.Date(March1.1959.POSIXlt) >: [1] "1959-03-01" >: > >: > as.Date(as.POSIXct(Mar2.59)) >: [1] "1959-03-02" >: > as.Date(as.POSIXct(as.character(Mar2.59))) >: [1] "1959-03-03" >: > print(POSIX.i <- as.POSIXct("1959-03-01")) >: [1] "1959-03-01 Pacific Standard Time" >: > for(i in 1:11){ >: + print(date.i <- as.Date(POSIX.i)) >: + print(POSIX.i <- as.POSIXct(as.character(date.i))) >: + } >: [1] "1959-03-02" >: [1] "1959-03-02 Pacific Standard Time" >: [1] "1959-03-03" >: [1] "1959-03-03 Pacific Standard Time" >: [1] "1959-03-04" >: [1] "1959-03-04 Pacific Standard Time" >: [1] "1959-03-05" >: [1] "1959-03-05 Pacific Standard Time" >: [1] "1959-03-06" >: [1] "1959-03-06 Pacific Standard Time" >: [1] "1959-03-07" >: [1] "1959-03-07 Pacific Standard Time" >: [1] "1959-03-08" >: [1] "1959-03-08 Pacific Standard Time" >: [1] "1959-03-09" >: [1] "1959-03-09 Pacific Standard Time" >: [1] "1959-03-10" >: [1] "1959-03-10 Pacific Standard Time" >: [1] "1959-03-11" >: [1] "1959-03-11 Pacific Standard Time" >: [1] "1959-03-12" >: [1] "1959-03-12 Pacific Standard Time" >: > >: Comments? > >I am not sure that the code really speaks for itself. What is the bug? >Note that as.Date converts dates relative to GMT, not the current time >zone. If you want to convert a POSIXct date to a Date date relative >to the current timezone you can convert it to character first. RNews 4/1 >has a table that provides a number of such idioms. > >______________________________________________ >R-help at stat.math.ethz.ch mailing list >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > >
>>>>> "Spencer" == Spencer Graves <spencer.graves at pdf.com> >>>>> on Sun, 27 Feb 2005 07:15:44 -0800 writes:Spencer> Hi, Gabor: Of course: time zone vs. GMT. Spencer> Next question: Might a simple example that Spencer> illustrates this be added to the help file for Spencer> "as.POSIXct", and if yes, what should be done to Spencer> make that happen? send such a simple example {few lines of R code + comments ("# ...")} to R-devel (or to an R-core member you know who would take it up). Martin Spencer> Gabor Grothendieck wrote: >> Spencer Graves <spencer.graves <at> pdf.com> writes: >> >> : >> : In R 2.0.1 under Windows 2000, at least in some cases, as.POSIXct >> : adds one to the date: >> : >> : > March1.1959.POSIXct <- as.POSIXct("1959-03-01") >> : > March1.1959.POSIXlt <- as.POSIXlt("1959-03-01") >> : > >> : > (Mar2.59 <- as.Date(March1.1959.POSIXct)) >> : [1] "1959-03-02" >> : > as.Date(March1.1959.POSIXlt) >> : [1] "1959-03-01" >> : > >> : > as.Date(as.POSIXct(Mar2.59)) >> : [1] "1959-03-02" >> : > as.Date(as.POSIXct(as.character(Mar2.59))) >> : [1] "1959-03-03" >> : > print(POSIX.i <- as.POSIXct("1959-03-01")) >> : [1] "1959-03-01 Pacific Standard Time" >> : > for(i in 1:11){ >> : + print(date.i <- as.Date(POSIX.i)) >> : + print(POSIX.i <- as.POSIXct(as.character(date.i))) >> : + } >> : [1] "1959-03-02" >> : [1] "1959-03-02 Pacific Standard Time" >> : [1] "1959-03-03" >> : [1] "1959-03-03 Pacific Standard Time" >> : [1] "1959-03-04" >> : [1] "1959-03-04 Pacific Standard Time" >> : [1] "1959-03-05" >> : [1] "1959-03-05 Pacific Standard Time" >> : [1] "1959-03-06" >> : [1] "1959-03-06 Pacific Standard Time" >> : [1] "1959-03-07" >> : [1] "1959-03-07 Pacific Standard Time" >> : [1] "1959-03-08" >> : [1] "1959-03-08 Pacific Standard Time" >> : [1] "1959-03-09" >> : [1] "1959-03-09 Pacific Standard Time" >> : [1] "1959-03-10" >> : [1] "1959-03-10 Pacific Standard Time" >> : [1] "1959-03-11" >> : [1] "1959-03-11 Pacific Standard Time" >> : [1] "1959-03-12" >> : [1] "1959-03-12 Pacific Standard Time" >> : > >> : Comments? >> >> I am not sure that the code really speaks for itself. What is the bug? >> Note that as.Date converts dates relative to GMT, not the current time >> zone. If you want to convert a POSIXct date to a Date date relative >> to the current timezone you can convert it to character first. RNews 4/1 >> has a table that provides a number of such idioms.