Tuesday, March 11, 2008

Mountain Standard Time

Again, here's one of those complaints that 99% of the population doesn't care about. But it affects me, and that's all that matters, right?

Here's the problem: I live in up in Northern BC, Canada. We don't have daylight savings time, in a handful of towns up here, but Mac doesn't acknowledge we exist. I've been bouncing back and forth between Calgary Time and Vancouver Time, but I'd really just like to be on our time. Back in 9, I used to be able to click the Daylight Savings Time Checkbox. But now, there's nothing I can do. Or is there? I haven't found anything to disable DST, or even create a new time zone.

However, I have a solution for you. Or rather, someone much smarter than I does. I posted this complaint at the Macworld forum, and a fellow named jaysoffian offered this as a solution:

... I did a little research and hopefully this works. The underpinning of OS X's date/time is this Unix library.

According to the Wikipedia:

Most of BC observes DST, but there is a large tract in east-central BC which does not, and it all falls in the Mountain Time Zone (most of BC is on Pacific Time). This includes Fort St. John, Charlie Lake, Taylor and Dawson Creek. The Crowsnest corridor between Creston and Yahk in the East Kootenays (southeastern BC) also keeps standard time year-round.

So I poked around in /usr/share/zoneinfo to see if any of those locations were in the OS X tz database and sure enough, Dawson Creek is. Using zdump appears to indicate the correct time:

<pre>code:<hr>
% zdump America/Dawson_Creek America/Vancouver
America/Dawson_Creek Mon Apr 10 18:10:25 2006 MST
America/Vancouver Mon Apr 10 18:10:25 2006 PDT
</pre><hr>


So the trick now is just to teach the OS X Date and Time preference pane about this timezone. Some poking around found me the plist file that the preference pane uses (shame on Apple for not including all the zones in the underlying tz database...). So here's what you do:

Make sure the System Preferences application is not running. From the Finder, select "Go -> Go to Folder..." Paste in the following path:

/
System/Library/PreferencePanes/DateAndTime.prefPane/Contents/Resources/TimeZone.prefPane/Contents/Resources


Copy "all_cities_adj.plist" to your Desktop. Just to be safe, select the copy on your desktop and use "File -> Duplicate" to make a backup.

Launch TextEdit and open "all_cities_adj.plist" on your Desktop.

Scroll to the end of the file and insert the following block just before the last two lines:

<pre>code:<hr>
<array>
<string>59.766666</string>
<string>-120.233333</string>
<string>4</string>


<string>America/Dawson_Creek</string>
<string>CA</string>
<string>Dawson Creek</string>
<string>Canada</string>
</array>
</pre><hr>

The end of the file now looks like this:

<pre>code:<hr>
...
<array>
<string>47.383335</string>
<string>8.550000</string>
<string>12</string>
<string>Europe/Zurich</string>
<string>CH</string>
<string>Zurich</string>
<string>Switzerland</string>
</array>
<array>
<string>59.766666</string>
<string>-120.233333</string>
<string>4</string>
<string>America/Dawson_Creek</string>
<string>CA</string>
<string>Dawson Creek</string>
<string>Canada</string>
</array>
</array>
</plist>
</pre><hr>


Save the file. Now drag "all_cities_adj.plist" from your Desktop back into the folder we opened previously in the Finder. The Finder should prompt you to authenticate.

The ownership of all_cities_adj.plist is now not correct though. To be safe, Launch Disk Utility, select the startup volume and run "Repair Disk Permissions" to fix the ownership.

You should then be able to launch System Preferences, bring up the Time and Date preference pane, and then select Dawson Creek - Canada.

It's possible Apple will overwrite this file with the next system update, so you might want to keep a copy of your updated all_cities_adj.plist.

Of course, if you're terminal savvy, you can save a lot of these steps by just using:

<pre>code:<hr>
% sudo vi /System/Library/PreferencePanes/DateAndTime.prefPane/Contents/Resources/\
TimeZone.prefPane/Contents/Resources/all_cities_adj.plist
</pre><hr>

Good luck.


No comments: