DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27365>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27365 exslt extension function date-time() reports wrong GMT offsets. Summary: exslt extension function date-time() reports wrong GMT offsets. Product: XalanC Version: 1.7 Platform: All OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: XalanC AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] The XalanEXSLTFunctionDateTime calculates the GMT offset as the difference between the local time hour and the gmt time hour. This calculation is valid only if the local date equals the gmt date. For instance, in New York (gmt offset = -5:00) at 16 o'clock local time, the offset is correctly calculate as 16 - 21 = -5. However, at 20 o'clock, the offset is incorrectly calculated as 20 - 1 = 19. The root cause is that the calculation does not take into account that the local time and the gmt time may be associated with different dates. Here is the pseudo code for fixing this problem (just a suggestion, there may be a better way of getting the correct gmt offset): According to the exslt web site (http://www.exslt.org/date/functions/date-time/index.html), the letter 'z' indicates a location in the gmt time zone, i.e., the offset equals zero. If (date_local == date_gmt) { if (time_local == time_gmt) { offset = 'z' } else { offset = time_local - time_gmt } } else if (date_local < date_gmt) { offset = time_local - time_gmt - 24 } else if (date_local > date_gmt) { offset = time_local - time_gmt + 24 } To easily compare the date, on could create date integers for date_local and date_gmt: date = (year * 10000) + (month * 100) + day
