[R] Chron, as.POSIXct problem
Brian Beckage
bbeckage at uvm.edu
Wed Nov 12 23:09:14 CET 2003
Thanks to all who responded to my posting.
At 11:39 AM -0500 11/12/03, Gabor Grothendieck wrote:
>You are being hit by a timezone problem. Its not really shifting
>the days by one. Its working in the GMT timezone, not yours.
>
>If you can accept a date format that chron supports then this is the
>easiest solution since chron does not support timezones and so can't
>give you such problems in the first place. For example,
>the following stays in chron the whole time:
>
> format(datesTest, format="m/day/year")
> [1] "Oct/01/1952" "Oct/02/1952" "Oct/03/1952"
>
>If you must convert to POSIXt to take advantage of a format
>only supported by POSIXt then use POSIXlt and specify the timezone explictly:
>
> format(as.POSIXlt(datesTest,tz="GMT"), "%m/%d/%Y")
> [1] "10/01/1952" "10/02/1952" "10/03/1952"
This solved the problem using as.POSIXlt(). I guess the tz argument
doesn't solve the problem using as.POSIXct(). In any case, I'm able
to use as.POSIXlt() in my current application.
>
>Its because of subtle problems like this that I think that some
>sort of naive (i.e. non-timezone) time such as chron or
>an alternative, should be in the base to encourage wider use.
I agree. Thanks again for your help.
Brian
>
>---
>Date: Wed, 12 Nov 2003 10:05:39 -0500
>From: Brian Beckage <bbeckage at uvm.edu>
>To: <r-help at stat.math.ethz.ch>
>Subject: [R] Chron, as.POSIXct problem
>
>
>
>Dear R list,
>
>I noticed the following 'problem' when changing the format of dates
>created with seq.dates() (from the Chron library) using as.POSIXct()
>(R 1.8.0 on OSX 10.2.8):
>
>> datesTest<-seq.dates(from="10/01/1952", length=3, by="days");
>> datesTest
>[1] 10/01/52 10/02/52 10/03/52
>
># Now changing the format to show year as 1952.
>
>> datesTest<-format(as.POSIXct(datesTest), "%m/%d/%Y")
>> datesTest
>[1] "09/30/1952" "10/01/1952" "10/02/1952"
>>
>
>The dates were shifted by one day. The work around is simple enough, e.g.,
>
>> datesTest<-format(as.POSIXct(datesTest+1), "%m/%d/%Y")
>[1] "10/01/1952" "10/02/1952" "10/03/1952"
>
>but I wonder if this is the intended behavior?
>
>Brian
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
>
>_______________________________________________
>No banners. No pop-ups. No kidding.
>Introducing My Way - http://www.myway.com
More information about the R-help
mailing list