I think this demonstrate on of the differences between Class 'Date' and 'POSIXlt'. Thanks, Marc!
...Tao From: Marc Schwartz <marc_schwa...@me.com> To: Ben Bolker <bbol...@gmail.com> Cc: "Shi, Tao" <shida...@yahoo.com>; "r-h...@stat.math.ethz.ch" <r-h...@stat.math.ethz.ch> Sent: Saturday, October 30, 2010 7:48:05 AM Subject: Re: [R] date calculation On Oct 30, 2010, at 9:22 AM, Ben Bolker wrote: > On 10-10-30 02:02 AM, Shi, Tao wrote: >> Hi Ben, >> >> That must be the case! In fact if I do: >> >>> difftime(strptime("24NOV2004", format="%d%b%Y"), >>> strptime("13MAY2004",format="%d%b%Y"), units="days", tz="GMT") >> Time difference of 195 days >> >> >> which supports your claim. >> >> Can someone from the R development team confirm this? >> >> Thanks! >> >> ...Tao >> >> > > It sounds like you think this is a bug. It's not (although it's > arguably not what you want). The general advice when using dates and > time in R is to use the *least* specific date format that will do what > you want, i.e. don't use a format that incorporates time zone > information (daylight savings time) information if you don't want to > deal with these complexities. > > I would suggest the chron package: > > library(chron) > diff(chron(dates.=c("24/11/2004","13/05/2004"),format="d/m/y")) Ben, If time and time zone are not relevant, any reason not to use: > diff(as.Date(c("13/05/2004", "24/11/2004"), format = "%d/%m/%Y")) Time difference of 195 days or perhaps conceptually easier: Date2 <- as.Date("24/11/2004", format = "%d/%m/%Y") Date1 <- as.Date("13/05/2004", format = "%d/%m/%Y") > Date2 - Date1 Time difference of 195 days R has built in arithmetic operations for such dates, without the need to use another package, since they are effectively numerics with a Date class: > str(Date1) Class 'Date' num 12551 > str(Date2) Class 'Date' num 12746 ? HTH, Marc Schwartz >> >> >> >> ----- Original Message ----- >>> From:Ben Bolker <bbol...@gmail.com> >>> To:r-h...@stat.math.ethz.ch >>> Cc: >>> Sent:Friday, October 29, 2010 7:54:53 PM >>> Subject:Re: [R] date calculation >>> >>> >>> Shi, Tao <shidaxia <at> >>> href="http://yahoo.com">yahoo.com> writes: >> >>> Could someone >>> explain to me why the following result is not a integer? >>> >>>> >>> difftime(strptime("24NOV2004", format="%d%b%Y"), strptime("13MAY2004", >>> >>>> format="%d%b%Y"), units="days") >>> Time difference of 195.0417 >>> days >> >> Presumably because this goes across a daylight-savings >>> time >> adjustment? 0.0417=1/24 days is 1 hour ... >> >> Ben >>> Bolker [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.