January 16, 2011 [phobos] std.datetime fails on OSX | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | I have no idea how this works on Mac OS X but one have to remember that on Mac OS X the Posix APIs are just another set of APIs and, as Apple sees, not the preferred APIs to use. The APIs that are usually preferred on Mac OS X are the Objective-C APIs. /Jacob Carlborg On 16 jan 2011, at 13:19, Jonathan M Davis wrote: > On Sunday 16 January 2011 03:50:08 Jacob Carlborg wrote: >> Don't know if it helps but I found this: >> >> /etc/localtime local time zone file >> /usr/share/zoneinfo time zone directory >> /usr/share/zoneinfo/posixrules rules for POSIX-style TZ's >> /usr/share/zoneinfo/GMT for UTC leap seconds >> >> If the file /usr/share/zoneinfo/GMT does not exist, UTC leap seconds are loaded from /usr/share/zoneinfo/posixrules. >> >> http://developer.apple.com/library/mac/#documentation/darwin/reference/manp ages/man3/tzsetwall.3.html > > Welll, the leap seconds are universal. Those won't vary from time zone to time zone. The time zone files themselves may or may not have them, so if a program reading them in wants to actually use leap seconds, and all it's going by is the time zone files, then whether or not leap seconds are used would depend on whether they're in the time zone file or not. However, it's quite possible that posixrules and GMT contain leap seconds and a program (or the OS) could take the leap seconds from there and apply them to any time zone which doesn't have leap seconds in its time zone file. > > Regardless, the posix standard says to ignore leap seconds, so that's what glibc and Linux does. However, that's not to say that the Mac isn't doing something different. > > From what I recall, all of the time zones in right/ had leap seconds in them and none of the others did, but it's quite possible that posixrules and GMT do, and I forgot. So, the OSX may just load them from there. It certainly sounds like it does in that documentation. > > Regardless, I'm not terribly interested in leap seconds (I think that they should be abolished along with DST) - particularly since the Posix standard disallows them - but since they _are_ in certain time zone files, and some crazy programmer may want to use them, or some poor programmer may be forced to use them, it seemed like I might as well make it so that std.datetime.PosixTimeZone applied leap seconds to time zones whose time zone file contained leap seconds. So, I did. > > However, with the current design of PosixTimeZone, if a programmer wants to use leap seconds, they need to pick a time zone whose file includes leap seconds. There's no way to grab the time zone rules from one file and the leap seconds from another. So, you couldn't use leap seconds on a Mac unless you brought along your own time zone files. But since you can't do it on _Windows_ without bringing along your own time zone files (since, as far as I can tell, Windows has not support for leap seconds, and WindowsTimeZone certainly doesn't), I don't see that as being a big deal. > > Regardless, thanks for the info. If nothing else, it does show that Mac OS X is doing its own thing with regards to leap seconds. It does make me wonder though if they try and use them normally (by the system clock), or if it's just something that _can_ be used if you use the right functions. As I understand it, the Posix standard requires that leap seconds be ignored, so if the OSX system clock uses it, then that would be breaking the standard. > > - Jonathan M Davis > _______________________________________________ > phobos mailing list > phobos at puremagic.com > http://lists.puremagic.com/mailman/listinfo/phobos -- /Jacob Carlborg |
Copyright © 1999-2021 by the D Language Foundation