build: generate timezone offsets too in zoneinfo2lua.pl

libs/http:	drop zoneinfo information in luci.http.protocol.data, use luci.sys.zoneinfo instead
libs/sys:	refresh zoneinfo information
This commit is contained in:
Jo-Philipp Wich 2008-12-06 03:18:14 +00:00
parent 21da2f7c9c
commit cbdc5af52e
3 changed files with 255 additions and 123 deletions

View file

@ -65,4 +65,74 @@ foreach my $zone ( sort keys %TZ ) {
printf "\t{ '%s', '%s' },\n", $zone, $TZ{$zone}
}
print <<HEAD;
}
OFFSET = {
HEAD
my %seen;
foreach my $tz ( sort keys %TZ ) {
my $zone = $TZ{$tz};
if( $zone =~ /^
([A-Z]+)
(?:
( -? \d+ (?: : \d+ )? )
(?:
([A-Z]+)
( -? \d+ (?: : \d+ )? )?
)?
)?
\b /xo ) {
my ( $offset, $s, $h, $m ) = ( 0, 1, 0, 0 );
my ( $std, $soffset, $dst, $doffset ) = ( $1, $2, $3, $4 );
next if $seen{$std}; # and ( !$dst or $seen{$dst} );
if ( $soffset ) {
( $s, $h, $m ) = $soffset =~ /^(-)?(\d+)(?::(\d+))?$/;
$s = $s ? 1 : -1;
$h ||= 0;
$m ||= 0;
$offset = $s * $h * 60 * 60;
$offset += $s * $m * 60;
printf("\t%-5s = %6d,\t-- %s\n",
lc($std), $offset, $std);
$seen{$std} = 1;
if( $dst ) {
if( $doffset ) {
( $s, $h, $m ) = $doffset =~ /^(-)?(\d+)(?::(\d+))?$/;
$s = $s ? 1 : -1;
$h ||= 0;
$m ||= 0;
$offset = $s * $h * 60 * 60;
$offset += $s * $m * 60;
} else {
$offset += 60 * 60;
}
printf("\t%-5s = %6d,\t-- %s\n",
lc($dst), $offset, $dst);
$seen{$dst} = 1;
}
}
else {
printf("\t%-5s = %6d,\t-- %s\n",
lc($std), $offset, $std);
$seen{$std} = 1;
}
}
}
print "}\n";

View file

@ -17,116 +17,14 @@ $Id$
-- This class contains functions to parse, compare and format http dates.
module("luci.http.protocol.date", package.seeall)
require("luci.sys.zoneinfo")
MONTHS = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"
}
--- The "TZ" table contains lowercased timezone names associated with their
-- corresponding time offsets sepcified in seconds.
-- @class table
TZ = {
-- DST zones
["brst"] = -2*3600; -- Brazil Summer Time (East Daylight)
["adt"] = -3*3600; -- Atlantic Daylight
["edt"] = -4*3600; -- Eastern Daylight
["cdt"] = -5*3600; -- Central Daylight
["mdt"] = -6*3600; -- Mountain Daylight
["pdt"] = -7*3600; -- Pacific Daylight
["ydt"] = -8*3600; -- Yukon Daylight
["hdt"] = -9*3600; -- Hawaii Daylight
["bst"] = 1*3600; -- British Summer
["mest"] = 2*3600; -- Middle European Summer
["sst"] = 2*3600; -- Swedish Summer
["fst"] = 2*3600; -- French Summer
["eest"] = 3*3600; -- Eastern European Summer
["cest"] = 2*3600; -- Central European Daylight
["wadt"] = 8*3600; -- West Australian Daylight
["kdt"] = 10*3600; -- Korean Daylight
["eadt"] = 11*3600; -- Eastern Australian Daylight
["nzdt"] = 13*3600; -- New Zealand Daylight
-- zones
["gmt"] = 0; -- Greenwich Mean
["ut"] = 0; -- Universal (Coordinated)
["utc"] = 0;
["wet"] = 0; -- Western European
["wat"] = -1*3600; -- West Africa
["azost"] = -1*3600; -- Azores Standard Time
["cvt"] = -1*3600; -- Cape Verde Time
["at"] = -2*3600; -- Azores
["fnt"] = -2*3600; -- Brazil Time (Extreme East - Fernando Noronha)
["ndt"] = -2*3600+1800;-- Newfoundland Daylight
["art"] = -3*3600; -- Argentina Time
["nft"] = -3*3600+1800;-- Newfoundland
["mnt"] = -4*3600; -- Brazil Time (West Standard - Manaus)
["ewt"] = -4*3600; -- U.S. Eastern War Time
["ast"] = -4*3600; -- Atlantic Standard
["bot"] = -4*3600; -- Bolivia Time
["vet"] = -4*3600; -- Venezuela Time
["est"] = -5*3600; -- Eastern Standard
["cot"] = -5*3600; -- Colombia Time
["act"] = -5*3600; -- Brazil Time (Extreme West - Acre)
["pet"] = -5*3600; -- Peru Time
["cst"] = -6*3600; -- Central Standard
["cest"] = 2*3600; -- Central European Summer
["mst"] = -7*3600; -- Mountain Standard
["pst"] = -8*3600; -- Pacific Standard
["yst"] = -9*3600; -- Yukon Standard
["hst"] = -10*3600; -- Hawaii Standard
["cat"] = -10*3600; -- Central Alaska
["ahst"] = -10*3600; -- Alaska-Hawaii Standard
["taht"] = -10*3600; -- Tahiti Time
["nt"] = -11*3600; -- Nome
["idlw"] = -12*3600; -- International Date Line West
["cet"] = 1*3600; -- Central European
["mez"] = 1*3600; -- Central European (German)
["met"] = 1*3600; -- Middle European
["mewt"] = 1*3600; -- Middle European Winter
["swt"] = 1*3600; -- Swedish Winter
["set"] = 1*3600; -- Seychelles
["fwt"] = 1*3600; -- French Winter
["west"] = 1*3600; -- Western Europe Summer Time
["eet"] = 2*3600; -- Eastern Europe; USSR Zone 1
["ukr"] = 2*3600; -- Ukraine
["sast"] = 2*3600; -- South Africa Standard Time
["bt"] = 3*3600; -- Baghdad; USSR Zone 2
["eat"] = 3*3600; -- East Africa Time
["irst"] = 3*3600+1800;-- Iran Standard Time
["zp4"] = 4*3600; -- USSR Zone 3
["msd"] = 4*3600; -- Moscow Daylight Time
["sct"] = 4*3600; -- Seychelles Time
["zp5"] = 5*3600; -- USSR Zone 4
["azst"] = 5*3600; -- Azerbaijan Summer Time
["mvt"] = 5*3600; -- Maldives Time
["uzt"] = 5*3600; -- Uzbekistan Time
["ist"] = 5*3600+1800;-- Indian Standard
["zp6"] = 6*3600; -- USSR Zone 5
["lkt"] = 6*3600; -- Sri Lanka Time
["pkst"] = 6*3600; -- Pakistan Summer Time
["yekst"] = 6*3600; -- Yekaterinburg Summer Time
["wast"] = 7*3600; -- West Australian Standard
["ict"] = 7*3600; -- Indochina Time
["wit"] = 7*3600; -- Western Indonesia Time
["cct"] = 8*3600; -- China Coast; USSR Zone 7
["wst"] = 8*3600; -- West Australian Standard
["hkt"] = 8*3600; -- Hong Kong
["bnt"] = 8*3600; -- Brunei Darussalam Time
["cit"] = 8*3600; -- Central Indonesia Time
["myt"] = 8*3600; -- Malaysia Time
["pht"] = 8*3600; -- Philippines Time
["sgt"] = 8*3600; -- Singapore Time
["jst"] = 9*3600; -- Japan Standard; USSR Zone 8
["kst"] = 9*3600; -- Korean Standard
["east"] = 10*3600; -- Eastern Australian Standard
["gst"] = 10*3600; -- Guam Standard; USSR Zone 9
["nct"] = 11*3600; -- New Caledonia Time
["nzt"] = 12*3600; -- New Zealand
["nzst"] = 12*3600; -- New Zealand Standard
["fjt"] = 12*3600; -- Fiji Time
["idle"] = 12*3600; -- International Date Line East
}
--- Return the time offset in seconds between the UTC and given time zone.
-- @param tz Symbolic or numeric timezone specifier
-- @return Time offset to UTC in seconds
@ -143,8 +41,8 @@ function tz_offset(tz)
return s * 60 * ( math.floor( v / 100 ) * 60 + ( v % 100 ) )
-- lookup symbolic tz
elseif TZ[tz:lower()] then
return TZ[tz:lower()]
elseif luci.sys.zoneinfo.OFFSET[tz:lower()] then
return luci.sys.zoneinfo.OFFSET[tz:lower()]
end
end

View file

@ -67,17 +67,18 @@ TZ = {
{ 'America/Anguilla', 'AST4' },
{ 'America/Antigua', 'AST4' },
{ 'America/Araguaina', 'BRT3' },
{ 'America/Argentina/Buenos Aires', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Catamarca', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Cordoba', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Jujuy', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/La Rioja', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Mendoza', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Rio Gallegos', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/San Juan', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Buenos Aires', 'ART3ARST,M10.3.0/0,M3.3.0/0' },
{ 'America/Argentina/Catamarca', 'ART3' },
{ 'America/Argentina/Cordoba', 'ART3ARST,M10.3.0/0,M3.3.0/0' },
{ 'America/Argentina/Jujuy', 'ART3' },
{ 'America/Argentina/La Rioja', 'ART3' },
{ 'America/Argentina/Mendoza', 'ART3' },
{ 'America/Argentina/Rio Gallegos', 'ART3' },
{ 'America/Argentina/Salta', 'ART3' },
{ 'America/Argentina/San Juan', 'ART3' },
{ 'America/Argentina/San Luis', 'ART3' },
{ 'America/Argentina/Tucuman', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Ushuaia', 'ART3ARST,M10.1.0/0,M3.3.0/0' },
{ 'America/Argentina/Tucuman', 'ART3ARST,M10.3.0/0,M3.3.0/0' },
{ 'America/Argentina/Ushuaia', 'ART3' },
{ 'America/Aruba', 'AST4' },
{ 'America/Asuncion', 'PYT4PYST,M10.3.0/0,M3.2.0/0' },
{ 'America/Atikokan', 'EST5' },
@ -90,7 +91,7 @@ TZ = {
{ 'America/Bogota', 'COT5' },
{ 'America/Boise', 'MST7MDT,M3.2.0,M11.1.0' },
{ 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' },
{ 'America/Campo Grande', 'AMT4AMST,M10.2.0/0,M2.3.0/0' },
{ 'America/Campo Grande', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
{ 'America/Cancun', 'CST6CDT,M4.1.0,M10.5.0' },
{ 'America/Caracas', 'VET4:30' },
{ 'America/Cayenne', 'GFT3' },
@ -98,7 +99,7 @@ TZ = {
{ 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' },
{ 'America/Costa Rica', 'CST6' },
{ 'America/Cuiaba', 'AMT4AMST,M10.2.0/0,M2.3.0/0' },
{ 'America/Cuiaba', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
{ 'America/Curacao', 'AST4' },
{ 'America/Danmarkshavn', 'GMT0' },
{ 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' },
@ -176,7 +177,7 @@ TZ = {
{ 'America/Rio Branco', 'AMT4' },
{ 'America/Santarem', 'BRT3' },
{ 'America/Santo Domingo', 'AST4' },
{ 'America/Sao Paulo', 'BRT3BRST,M10.2.0/0,M2.3.0/0' },
{ 'America/Sao Paulo', 'BRT3BRST,M10.3.0/0,M2.3.0/0' },
{ 'America/Scoresbysund', 'EGT1EGST,M3.5.0/0,M10.5.0/1' },
{ 'America/Shiprock', 'MST7MDT,M3.2.0,M11.1.0' },
{ 'America/St Barthelemy', 'AST4' },
@ -224,12 +225,12 @@ TZ = {
{ 'Asia/Choibalsan', 'CHOT-8' },
{ 'Asia/Chongqing', 'CST-8' },
{ 'Asia/Colombo', 'IST-5:30' },
{ 'Asia/Damascus', 'EET-2EEST,M4.1.5/0,J274/0' },
{ 'Asia/Damascus', 'EET-2EEST,M4.1.5/0,J305/0' },
{ 'Asia/Dhaka', 'BDT-6' },
{ 'Asia/Dili', 'TLT-9' },
{ 'Asia/Dubai', 'GST-4' },
{ 'Asia/Dushanbe', 'TJT-5' },
{ 'Asia/Gaza', 'EET-2EEST,J91/0,M9.2.4' },
{ 'Asia/Gaza', 'EET-2EEST,J91/0,M8.5.4' },
{ 'Asia/Harbin', 'CST-8' },
{ 'Asia/Ho Chi Minh', 'ICT-7' },
{ 'Asia/Hong Kong', 'HKT-8' },
@ -365,7 +366,7 @@ TZ = {
{ 'Indian/Kerguelen', 'TFT-5' },
{ 'Indian/Mahe', 'SCT-4' },
{ 'Indian/Maldives', 'MVT-5' },
{ 'Indian/Mauritius', 'MUT-4' },
{ 'Indian/Mauritius', 'MUT-4MUST,M10.5.0,M3.5.0/3' },
{ 'Indian/Mayotte', 'EAT-3' },
{ 'Indian/Reunion', 'RET-4' },
{ 'Pacific/Apia', 'WST11' },
@ -406,3 +407,166 @@ TZ = {
{ 'Pacific/Wake', 'WAKT-12' },
{ 'Pacific/Wallis', 'WFT-12' },
}
OFFSET = {
gmt = 0, -- GMT
eat = 10800, -- EAT
cet = 3600, -- CET
wat = 3600, -- WAT
cat = 7200, -- CAT
wet = 0, -- WET
sast = 7200, -- SAST
eet = 7200, -- EET
hast = -36000, -- HAST
hadt = -32400, -- HADT
akst = -32400, -- AKST
akdt = -28800, -- AKDT
ast = -14400, -- AST
brt = -10800, -- BRT
art = -10800, -- ART
arst = -7200, -- ARST
pyt = -14400, -- PYT
pyst = -10800, -- PYST
est = -18000, -- EST
cst = -21600, -- CST
amt = -14400, -- AMT
cot = -18000, -- COT
mst = -25200, -- MST
mdt = -21600, -- MDT
vet = -16200, -- VET
gft = -10800, -- GFT
pst = -28800, -- PST
pdt = -25200, -- PDT
ect = -18000, -- ECT
gyt = -14400, -- GYT
bot = -14400, -- BOT
pet = -18000, -- PET
pmst = -10800, -- PMST
pmdt = -7200, -- PMDT
uyt = -10800, -- UYT
uyst = -7200, -- UYST
fnt = -7200, -- FNT
srt = -10800, -- SRT
egt = -3600, -- EGT
egst = 0, -- EGST
nst = -12600, -- NST
ndt = -9000, -- NDT
wst = 28800, -- WST
davt = 25200, -- DAVT
ddut = 36000, -- DDUT
mawt = 21600, -- MAWT
nzst = 43200, -- NZST
nzdt = 46800, -- NZDT
rott = -10800, -- ROTT
syot = 10800, -- SYOT
vost = 21600, -- VOST
almt = 21600, -- ALMT
anat = 43200, -- ANAT
anast = 46800, -- ANAST
aqtt = 18000, -- AQTT
tmt = 18000, -- TMT
azt = 14400, -- AZT
azst = 18000, -- AZST
ict = 25200, -- ICT
kgt = 21600, -- KGT
bnt = 28800, -- BNT
chot = 28800, -- CHOT
ist = 19800, -- IST
bdt = 21600, -- BDT
tlt = 32400, -- TLT
gst = 14400, -- GST
tjt = 18000, -- TJT
hkt = 28800, -- HKT
hovt = 25200, -- HOVT
irkt = 28800, -- IRKT
irkst = 32400, -- IRKST
wit = 25200, -- WIT
eit = 32400, -- EIT
aft = 16200, -- AFT
pett = 43200, -- PETT
petst = 46800, -- PETST
pkt = 18000, -- PKT
npt = 20700, -- NPT
krat = 25200, -- KRAT
krast = 28800, -- KRAST
myt = 28800, -- MYT
magt = 39600, -- MAGT
magst = 43200, -- MAGST
cit = 28800, -- CIT
pht = 28800, -- PHT
novt = 21600, -- NOVT
novst = 25200, -- NOVST
omst = 21600, -- OMST
omsst = 25200, -- OMSST
orat = 18000, -- ORAT
kst = 32400, -- KST
qyzt = 21600, -- QYZT
mmt = 23400, -- MMT
sakt = 36000, -- SAKT
sakst = 39600, -- SAKST
uzt = 18000, -- UZT
sgt = 28800, -- SGT
get = 14400, -- GET
btt = 21600, -- BTT
jst = 32400, -- JST
ulat = 28800, -- ULAT
vlat = 36000, -- VLAT
vlast = 39600, -- VLAST
yakt = 32400, -- YAKT
yakst = 36000, -- YAKST
yekt = 18000, -- YEKT
yekst = 21600, -- YEKST
azot = -3600, -- AZOT
azost = 0, -- AZOST
cvt = -3600, -- CVT
fkt = -14400, -- FKT
fkst = -10800, -- FKST
cwst = 31500, -- CWST
lhst = 37800, -- LHST
lhst = 39600, -- LHST
msk = 10800, -- MSK
msd = 14400, -- MSD
samt = 14400, -- SAMT
samst = 18000, -- SAMST
volt = 10800, -- VOLT
volst = 14400, -- VOLST
iot = 21600, -- IOT
cxt = 25200, -- CXT
cct = 23400, -- CCT
tft = 18000, -- TFT
sct = 14400, -- SCT
mvt = 18000, -- MVT
mut = 14400, -- MUT
must = 18000, -- MUST
ret = 14400, -- RET
chast = 45900, -- CHAST
chadt = 49500, -- CHADT
vut = 39600, -- VUT
phot = 46800, -- PHOT
tkt = -36000, -- TKT
fjt = 43200, -- FJT
tvt = 43200, -- TVT
galt = -21600, -- GALT
gamt = -32400, -- GAMT
sbt = 39600, -- SBT
hst = -36000, -- HST
lint = 50400, -- LINT
kost = 39600, -- KOST
mht = 43200, -- MHT
mart = -34200, -- MART
sst = -39600, -- SST
nrt = 43200, -- NRT
nut = -39600, -- NUT
nft = 41400, -- NFT
nct = 39600, -- NCT
pwt = 32400, -- PWT
pont = 39600, -- PONT
pgt = 36000, -- PGT
ckt = -36000, -- CKT
taht = -36000, -- TAHT
gilt = 43200, -- GILT
tot = 46800, -- TOT
trut = 36000, -- TRUT
wakt = 43200, -- WAKT
wft = 43200, -- WFT
}