[R] julian

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat May 14 14:44:07 CEST 2005


Rolf Turner <rolf at math.unb.ca> writes:

> I have a problem wherein I need to convert back and forth from
> dates of the form "2000-04-11" to Julian dates.  After some
> experimentation I found that
> 
> 	> z <- strptime("2000-62",format="%Y-%j")
> 	> z
> 
> gave me "2000-03-02" --- i.e. March 2 which is as it should be
> according to my (not too reliable) arithmetic.
> 
> Going the other direction, more experimentation led me to
> 
> 	> julian(z,origin=as.POSIXct("1999-12-31"))
> 
> which gives
> 
> Time difference of 62 days
> 
> and I thought that I had a working (if not fully comprehended)
> syntax.  My illusions were shattered when I tried another Julian
> date, 102:
> 
> 	> z <- strptime("2000-102",format="%Y-%j")
>         > z
> 
> gives "2000-04-11" --- i.e. April 11, which checks with what I think
> it should be.  But reversing the direction:
> 
> 	> julian(z,origin=as.POSIXct("1999-12-31"))
> 
> gives
> 
> Time difference of 101.9583 days
> 
> Where did the missing 0.0417 days go to?

Into the daylight savings account, I guess.
 
> What syntax should I really be using?

It's not the syntax as much as the timezone. But what has as.Date done
wrong, since you seem set on ignoring it?

> as.Date(z) - as.Date("1999-12-31")
Time difference of 102 days

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list