[phobos] std.datetime fails on OSX
Jacob Carlborg
doob at me.com
Sun Jan 16 04:39:51 PST 2011
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
More information about the phobos
mailing list