The Halfbakery is full of wonderfully pie-in-the-sky methods of redoing the current dispersement of area codes in the US, Canada, and North American protectorates. And while a lot of them obviously required a lot of thought to create, many are just too goldarned complex.
Sorry.
So how about
this one: The continental (thanks to [angel]) US, Alaska, and Hawaii are spread across six total time zones. Guam, the Virgin Islands, Midway, and other tiny little critters are spread across about 5 more.
There are 10 digits on a telephone keypad.
Why not add one single digit to every existing telephone number that is dependent on your time zone?
2-Eastern/Atlantic/Newfoundland
3-Future Eastern split
4-Central
5-Mountain
6-Pacific
7-Alaska/Hawaii
8-All others
Or some combination thereof. 1 and 0 would remain the keys for long distance and operator, respectively.
I consider this to be far simpler than synchronizing to ZIP Codes, since I don't even know my OWN ZIP code, and learning one extra digit is easier than learning Five possibly new ones for every number.
Also, this is a fairly intuitive system - You know where Denver is, right? Wanna call your friend in Denver? It only takes a quarter second to think of the time zone that it's in (mountain), and dial that up.
This would require no new numbers beyond the current splitting that's already occuring in area codes around the country, and would allow for a much more intuitive split system, since many of the area codes that are numerically similar to existing ones are spread out across the country. So new splits could be more easily learned by the populace. New York wants a new area code? Under the old system, you gotta find one. Under the new one, 213 is available again (213 is currently downtown LA), which would compliment the existing 212 nicely.
There'd be no need to immediately reprint everything from business cards to taxicabs, since anyone who's calling long distance probably knows time zones anyway.
Possible problems: Indiana and Arizona don't follow DST, so the time zones would change. Easiest way to solve that is to permanently associate them with one of the time zone codes, based on geographical proximity (I'd go with Central and Mountain).
Flame away.