[R] help with POSIX

Thomas Lumley tlumley at u.washington.edu
Fri Apr 22 21:07:34 CEST 2005


On Fri, 22 Apr 2005, Ghosh, Sandeep wrote:

> For the r script below
>
>> datestr <- "01/01/2004"
>> as.POSIXct(as.Date(datestr, "%d/%m/%Y"))
> I get the following output
> "2003-12-31 18:00:00 Central Standard Time"
>
> Why is the date a day before. I guess its something to do with the time, 
> but is there a way to get it to return 2004-01-01 instead?

Yes.

If you want POSIXt, which includes time as well as date and so depends on 
time zone, use it.
> datestr <- "01/01/2004"
> strptime(datestr, "%d/%m/%Y")
[1] "2004-01-01"
> class(strptime(datestr, "%d/%m/%Y"))
[1] "POSIXt"  "POSIXlt"
> as.POSIXct(strptime(datestr, "%d/%m/%Y"))
[1] "2004-01-01 Pacific Standard Time"

If you just want a date, just use Date
> as.Date(datestr, "%d/%m/%Y")
[1] "2004-01-01"

When you convert from Date to POSIXt it has to pick an arbitrary time 
within the day, and it picks midnight GMT.

 	-thomas




More information about the R-help mailing list