Skip to content

How to convert Datetime numbers from Excel to POSIXt objects

4 messages · Peter Dalgaard, Rolf Fankhauser, Gabor Grothendieck

#
Rolf Fankhauser wrote:
[1] 23.99981

So your expectation is off by 1/24th of a day.

Can you think of something that might affect time differences by that
amount, depending on which times of the year you are comparing?

  
    
#
Hi all,

I need to compare time series data files of different time formats. I 
had no problems with text format using strptime.
But how can I convert datetime numbers from Excel (days since 30.12.1899 
00:00:00) into POSIXt objects?
For example 29770.375 should be converted to  "03.07.1981 09:00:00"

I tried the following code and encountered strange results:

t1-t0 gives 29770.33 (should be 29770.375 in my opinion)
t1-t2 and t1-t3 are ok
t1-t4 gives 183.3333 (should be 183.375)
Are these rounding errors?

The R-code:

t1 <- strptime("3.7.1981 09:00:00","%d.%m.%Y %H:%M:%S")
t0 <- strptime("30.12.1899 00:00:00","%d.%m.%Y %H:%M:%S")
t2 <- strptime("3.7.1981 00:00:00","%d.%m.%Y %H:%M:%S")
t3 <- strptime("1.7.1981 00:00:00","%d.%m.%Y %H:%M:%S")
t4 <- strptime("1.1.1981 00:00:00","%d.%m.%Y %H:%M:%S")
t1 - t0
t1 - t2
difftime(t1,t2,units="days")
t1 - t3
t1 - t4

Thanks for any help or clarifications

Rolf
#
Since you are getting the date times from Excel clearly you don't need
time zones, etc. so you can use chron.  See R News 4/1 for more.
+  t2 = "3.7.1981 00:00:00", t3 = "1.7.1981 00:00:00", t4 = "1.1.1981 00:00:00")
Time in days:
    t1 t1     t2 t2     t3 t3     t4 t4
29770.375    -0.375    -2.000  -181.000
On Dec 14, 2007 12:06 PM, Rolf Fankhauser <rolf.fankhauser at gepdata.ch> wrote:
#
Ok, I see, the difference comes from summer and winter time. Thanks for 
the hint!
Stupid not to bear that in mind!!
Peter Dalgaard wrote: