You are on the right track. I suppose that linux and windows use 32 bit For time_t and we go back beyond a valid date. Try this code:
#include <stdio.h> #include <time.h> int main() { struct tm a; time_t b; strptime("1900-03-15 12:00:00","%Y-%m-%d %H:%M:%S",&a); printf("%s\n",asctime(&a)); // now go via time_t b = mktime(&a); printf("%s\n",ctime(&b)); } And if we go via time_t we get unix epoch 0 back. Somehow R manages To be less wrong then the OS, but still wrong.... Heiko -----Original Message----- From: Peter Dalgaard [mailto:[EMAIL PROTECTED] Sent: Mittwoch, 19. November 2003 17:46 To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: Re: [R] ISOdate returns incorrect date? "Heiko Schaefer" <[EMAIL PROTECTED]> writes: > Does this really work for you? I still get: > > ISOdate(1900,6,16) > [1] "1900-06-15 14:00:00 Westeuropäische Sommerzeit" > > ISOdate(1900,6,16,tz="") > [1] "1900-06-15 12:00:00 Westeuropäische Sommerzeit" > > Obviously the time son influences the time, but it can > Not possibly account for the difference of a full day?! > > Still puzzled... Yes, something is strange for me too (RedHat 8): > ISOdate(1900,3,1) [1] "1900-03-01 13:00:00 CET" > ISOdate(1900,3,2) [1] "1900-03-01 13:00:00 CET" Apparently, the one-day shift affects all dates after March 2, 1900, and in no other year. One easily gets the suspicion that the fact that 1900 was *not* a leap year has something to do with it. However, strptime() which this calls indirectly is only as good as its OS-level counterpart, I believe. -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help