I didn't see the iso 8601 format for datetime on the manual page you linked, it does seem to provide it but uses a 'space' instead of 'T' char to separate date and time. Your library has functions I think to be able to make new string like examples I provided before, perhaps you can have function that uses them to output in format like on the wikipedia page. Moment.js I see also take this string format as input for datetime:
http://momentjs.com/timezone/
Is there a reason that you reference linux manual? I am running Windows, so will TZBuilder.hx be usable or do I need to run linux VM to update?
I had a look at your tests, you don't seem to be testing for dates outside of the 32-bit signed integer range? Please try run tests on a year such as 2039 and 1800. The dates you provided I think would all pass on 32-bit signed integer timestamps, please test for 64-bit timestamps.
UTC+0 is linux epoch, UTC time with 0 offset. I know we should store datetime like this. I might not always want to work with UTC+0 and local time of user though.
Example, app that lets user make an appointment in a different timezone (They live in New York and make appointment 3 days later in Berlin), this appointment time is sent to the server which then uses your datetime library to convert their New York datetime to UTC+0, after conversion store time in server database. When the server is asked to provide the time to be viewed in Berlin timezone to the user in New York, it should be possible to convert from UTC+0 to use Berlin offset at that point in time(So if this appointment 3 days later DST happen, we see correct time). I do not need to convert between say New York and Berlin datetimes, as long as I can at least convert the UTC+offset to UTC+0 and UTC+0 to UTC+offset(from TZ database) it should be good :) I am new to work with time internationally so maybe I misunderstand. Another example might be app that have clocks with different time around the world, eg Tokyo Japan, Sydney Australia, Paris France.