On Wed, 15 Jan 1997, Markus G. Kuhn wrote:
I have done a sample implementation of the draft-newman-datetime-00.txt ISO 8601 profile with the modifications suggested by Paul and myself already included. So far, this is only the write routine, the parser will follow later.
Thank you. This is a good start and is definitely needed. Although I don't agree with all the suggested changes.
I have some doubts whether this code will handle the local time form correctly during both DST switch hours. Does anyone know a nicer solution for determining the UTC offset of local time with portable library functions reliably? (May be, something like "utm.tm_isdst = ltm.tm_isdst" before mktime() is still necessary?)
Your code won't work right across the timezone shift. I suggest punting on difftime and doing something like this (which assumes no more than a 24 hour difference between local time and UTC). offset = local.tm_yday - gmt.tm_yday; if (offset > 1) { offset = -24; } else if (offset < -1) { offset = 24; } else { offset *= 24; } offset += local.tm_hour - gmt.tm_hour; offset *= 60; offset += local.tm_min - gmt.tm_min;
Well-engineered ISO C example code that can easily be included in new applications will certainly make the ISO 8601 profile RFC more popular and should definitely be added.
I agree. Although it should be in an appendix with appropriate disclaimer.