root/zip2tz/state2tz.pl

Revision 2100 (checked in by miyagawa, 13 years ago)

import zip2tz

  • Property svn:executable set to *
Line 
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4 use URI::Escape;
5 use YAML;
6
7 my %abbr;
8 while (<DATA>) {
9     /^(.*?)\s+(\w\w)$/
10         and $abbr{uc($1)} = $2;
11 }
12
13 my %tzs = (
14     'AKST' => 'America/Anchorage',
15     'CST' => 'America/Chicago',
16     'EST' => 'America/New_York',
17     'HST without DST' => 'Pacific/Honolulu',
18     'MST' => 'America/Denver',
19     'PST' => 'America/Los_Angeles',
20     'UTC-11 without DST' => 'Pacific/Pago_Pago',
21     'UTC+10 without DST' => 'Pacific/Guam',
22     'MST without DST' => 'America/Phoenix',
23     'AST without DST' => 'America/Puerto_Rico',
24 );
25
26
27 # GET http://en.wikipedia.org/wiki/List_of_U.S._states_by_time_zone
28 my %state2olson;
29 while (<>) {
30     chomp;
31     my($abbr_state, $olson);
32     if (m!^<li><a href="/wiki/([^\"]+)" title=".*?">.*?</a>:.*<b>!) {
33         $abbr_state = abbr_state($1) or warn "XXX $1";
34         my $tz = (m!<b>(.*?)</b>!)[0];
35         $olson = $tzs{$tz} or warn "YYY $abbr_state $tz $_";
36     }
37     elsif (m!<li><a href="/wiki/([^\"]+)" title=".*?">.*?</a>:?$!) {
38         $abbr_state = abbr_state($1) or warn "XXX $1";
39         <>; # <ul>
40         $_ = <>;
41         my $tz = (m!<b>(.*?)</b>!)[0];
42         $olson = $tzs{$tz} or warn "YYY $abbr_state $tz";
43         $_ = <> until m!</ul>!;
44     }
45
46     if ($abbr_state && $olson) {
47         $state2olson{$abbr_state} = $olson;
48     }
49 }
50
51 print YAML::Dump \%state2olson;
52
53 sub abbr_state {
54     my $state = uri_unescape(shift);
55     $state =~ s/_/ /g;
56     $state =~ s/ \(U\.S\. state\)$//;
57     $state =~ s/^U\.S\. //;
58     $state = "DISTRICT OF COLUMBIA" if $state eq 'Washington, DC';
59     return $abbr{uc($state)};
60 }
61
62 __DATA__
63 # http://www.usps.com/ncsc/lookups/abbr_state.txt
64 State/Possession                Abbreviation
65
66 ALABAMA                         AL
67 ALASKA                          AK
68 AMERICAN SAMOA                  AS
69 ARIZONA                         AZ
70 ARKANSAS                        AR
71 CALIFORNIA                      CA
72 COLORADO                        CO
73 CONNECTICUT                     CT
74 DELAWARE                        DE
75 DISTRICT OF COLUMBIA            DC
76 FEDERATED STATES OF MICRONESIA  FM
77 FLORIDA                         FL
78 GEORGIA                         GA
79 GUAM                            GU
80 HAWAII                          HI
81 IDAHO                           ID
82 ILLINOIS                        IL
83 INDIANA                         IN
84 IOWA                            IA
85 KANSAS                          KS
86 KENTUCKY                        KY
87 LOUISIANA                       LA
88 MAINE                           ME
89 MARSHALL ISLANDS                MH
90 MARYLAND                        MD
91 MASSACHUSETTS                   MA
92 MICHIGAN                        MI
93 MINNESOTA                       MN
94 MISSISSIPPI                     MS
95 MISSOURI                        MO
96 MONTANA                         MT
97 NEBRASKA                        NE
98 NEVADA                          NV
99 NEW HAMPSHIRE                   NH
100 NEW JERSEY                      NJ
101 NEW MEXICO                      NM
102 NEW YORK                        NY
103 NORTH CAROLINA                  NC
104 NORTH DAKOTA                    ND
105 NORTHERN MARIANA ISLANDS        MP
106 OHIO                            OH
107 OKLAHOMA                        OK
108 OREGON                          OR
109 PALAU                           PW
110 PENNSYLVANIA                    PA
111 PUERTO RICO                     PR
112 RHODE ISLAND                    RI
113 SOUTH CAROLINA                  SC
114 SOUTH DAKOTA                    SD
115 TENNESSEE                       TN
116 TEXAS                           TX
117 UTAH                            UT
118 VERMONT                         VT
119 VIRGIN ISLANDS                  VI
120 VIRGINIA                        VA
121 WASHINGTON                      WA
122 WEST VIRGINIA                   WV
123 WISCONSIN                       WI
124 WYOMING                         WY
125
126
127 Military "State"                Abbreviation
128
129 Armed Forces Africa             AE
130 Armed Forces Americas           AA
131 (except Canada)
132 Armed Forces Canada             AE
133 Armed Forces Europe             AE
134 Armed Forces Middle East        AE
135 Armed Forces Pacific            AP
136
Note: See TracBrowser for help on using the browser.