|
Packit |
95306a |
#!/usr/bin/perl -w
|
|
Packit |
95306a |
# Copyright (c) 2010-2017 Sullivan Beck. All rights reserved.
|
|
Packit |
95306a |
# This program is free software; you can redistribute it and/or modify it
|
|
Packit |
95306a |
# under the same terms as Perl itself.
|
|
Packit |
95306a |
|
|
Packit |
95306a |
###############################################################################
|
|
Packit |
95306a |
###############################################################################
|
|
Packit |
95306a |
# This script is used to automatically generate the Date::Manip::DM5abbrevs
|
|
Packit |
95306a |
# modeul used in Date::Manip 5.xx .
|
|
Packit |
95306a |
|
|
Packit |
95306a |
use lib "./lib";
|
|
Packit |
95306a |
|
|
Packit |
95306a |
require 5.010000;
|
|
Packit |
95306a |
use strict;
|
|
Packit |
95306a |
use warnings;
|
|
Packit |
95306a |
|
|
Packit |
95306a |
use Date::Manip::Zones;
|
|
Packit |
95306a |
use Date::Manip::TZ;
|
|
Packit |
95306a |
|
|
Packit |
95306a |
our($VERSION);
|
|
Packit |
95306a |
$VERSION='6.60';
|
|
Packit |
95306a |
|
|
Packit |
95306a |
our($DEBUG);
|
|
Packit |
95306a |
$DEBUG = 0;
|
|
Packit |
95306a |
|
|
Packit |
95306a |
our(@keep);
|
|
Packit |
95306a |
@keep = qw(
|
|
Packit |
95306a |
idlw -1200
|
|
Packit |
95306a |
nt -1100
|
|
Packit |
95306a |
sat -0400
|
|
Packit |
95306a |
cldt -0300
|
|
Packit |
95306a |
at -0200
|
|
Packit |
95306a |
utc +0000
|
|
Packit |
95306a |
mewt +0100
|
|
Packit |
95306a |
mez +0100
|
|
Packit |
95306a |
fwt +0100
|
|
Packit |
95306a |
gb +0100
|
|
Packit |
95306a |
swt +0100
|
|
Packit |
95306a |
mesz +0200
|
|
Packit |
95306a |
fst +0200
|
|
Packit |
95306a |
metdst +0200
|
|
Packit |
95306a |
eetdst +0300
|
|
Packit |
95306a |
eetedt +0300
|
|
Packit |
95306a |
bt +0300
|
|
Packit |
95306a |
it +0330
|
|
Packit |
95306a |
zp4 +0400
|
|
Packit |
95306a |
zp5 +0500
|
|
Packit |
95306a |
ist +0530
|
|
Packit |
95306a |
zp6 +0600
|
|
Packit |
95306a |
awst +0800
|
|
Packit |
95306a |
rok +0900
|
|
Packit |
95306a |
aest +1000
|
|
Packit |
95306a |
acdt +1030
|
|
Packit |
95306a |
cadt +1030
|
|
Packit |
95306a |
aedt +1100
|
|
Packit |
95306a |
eadt +1100
|
|
Packit |
95306a |
nzt +1200
|
|
Packit |
95306a |
idle +1200
|
|
Packit |
95306a |
);
|
|
Packit |
95306a |
|
|
Packit |
95306a |
############################################################################
|
|
Packit |
95306a |
# MAIN PROGRAM
|
|
Packit |
95306a |
############################################################################
|
|
Packit |
95306a |
|
|
Packit |
95306a |
my $year = ( localtime(time) )[5] + 1900;
|
|
Packit |
95306a |
my $tz = new Date::Manip::TZ;
|
|
Packit |
95306a |
|
|
Packit |
95306a |
my $podstr = '=pod'; # so the CPAN indexer won't treat this as a POD file
|
|
Packit |
95306a |
|
|
Packit |
95306a |
print "package Date::Manip::DM5abbrevs;
|
|
Packit |
95306a |
# Copyright (c) 2003-$year Sullivan Beck. All rights reserved.
|
|
Packit |
95306a |
# This program is free software; you can redistribute it and/or modify it
|
|
Packit |
95306a |
# under the same terms as Perl itself.
|
|
Packit |
95306a |
|
|
Packit |
95306a |
########################################################################
|
|
Packit |
95306a |
########################################################################
|
|
Packit |
95306a |
|
|
Packit |
95306a |
$podstr
|
|
Packit |
95306a |
|
|
Packit |
95306a |
=head1 NAME
|
|
Packit |
95306a |
|
|
Packit |
95306a |
Date::Manip::DM5abbrevs - A list of all timezone abbreviations
|
|
Packit |
95306a |
|
|
Packit |
95306a |
=head1 SYNPOSIS
|
|
Packit |
95306a |
|
|
Packit |
95306a |
This module is not intended to be used directly. Date::Manip 5.xx
|
|
Packit |
95306a |
will load it as needed.
|
|
Packit |
95306a |
|
|
Packit |
95306a |
This module contains all of the time zone abbreviations from
|
|
Packit |
95306a |
Date::Manip 6.xx copied backwards to 5.xx to provide slightly
|
|
Packit |
95306a |
better support for time zones.
|
|
Packit |
95306a |
|
|
Packit |
95306a |
Note that this is only a bandaid fix, and does not add proper
|
|
Packit |
95306a |
time zone handling to version 5.xx .
|
|
Packit |
95306a |
|
|
Packit |
95306a |
=cut
|
|
Packit |
95306a |
|
|
Packit |
95306a |
require 5.000;
|
|
Packit |
95306a |
|
|
Packit |
95306a |
use strict;
|
|
Packit |
95306a |
use warnings;
|
|
Packit |
95306a |
|
|
Packit |
95306a |
our(\$VERSION);
|
|
Packit |
95306a |
\$VERSION='6.60';
|
|
Packit |
95306a |
|
|
Packit |
95306a |
END {
|
|
Packit |
95306a |
my \$tmp;
|
|
Packit |
95306a |
\$tmp = \\\$Date::Manip::DM5::Abbrevs;
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
|
|
Packit |
95306a |
\$Date::Manip::DM5::Abbrevs = join(' ',qw(
|
|
Packit |
95306a |
";
|
|
Packit |
95306a |
|
|
Packit |
95306a |
my @tmp = @keep;
|
|
Packit |
95306a |
my %off;
|
|
Packit |
95306a |
while (@tmp) {
|
|
Packit |
95306a |
my($abb) = shift(@tmp);
|
|
Packit |
95306a |
my($off) = shift(@tmp);
|
|
Packit |
95306a |
$off{$abb} = $off;
|
|
Packit |
95306a |
print " $abb" . " "x(6-length($abb)) . " $off\n";
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
print "\n";
|
|
Packit |
95306a |
|
|
Packit |
95306a |
# We have to come up with the best offset for each abbreviation.
|
|
Packit |
95306a |
#
|
|
Packit |
95306a |
# We'll look first at values in the current year.
|
|
Packit |
95306a |
# Then we'll look back in time.
|
|
Packit |
95306a |
|
|
Packit |
95306a |
ABBREV: foreach my $abbrev (sort keys %Date::Manip::Zones::Abbrev) {
|
|
Packit |
95306a |
my @zone = @{ $Date::Manip::Zones::Abbrev{$abbrev} };
|
|
Packit |
95306a |
|
|
Packit |
95306a |
foreach my $zone (@zone) {
|
|
Packit |
95306a |
my @period = $tz->all_periods($zone,$year);
|
|
Packit |
95306a |
foreach my $period (@period) {
|
|
Packit |
95306a |
my @per = @$period;
|
|
Packit |
95306a |
my $abb = lc($per[4]);
|
|
Packit |
95306a |
next if ($abb ne $abbrev);
|
|
Packit |
95306a |
my $off = $per[3];
|
|
Packit |
95306a |
my ($h,$m,$s) = @$off;
|
|
Packit |
95306a |
$h += 0;
|
|
Packit |
95306a |
next if ($s != 0);
|
|
Packit |
95306a |
|
|
Packit |
95306a |
my $sign;
|
|
Packit |
95306a |
if ($h < 0) {
|
|
Packit |
95306a |
$h *= -1;
|
|
Packit |
95306a |
$m *= -1;
|
|
Packit |
95306a |
$sign = "-";
|
|
Packit |
95306a |
} else {
|
|
Packit |
95306a |
$sign = "+";
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
$h = "0$h" if (length($h) == 1);
|
|
Packit |
95306a |
$m = "0$m" if (length($m) == 1);
|
|
Packit |
95306a |
$off = "$sign$h$m";
|
|
Packit |
95306a |
|
|
Packit |
95306a |
print " $abb" . " "x(6-length($abb)) . " $off\n";
|
|
Packit |
95306a |
$off{$abb} = $off;
|
|
Packit |
95306a |
next ABBREV;
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
|
|
Packit |
95306a |
# If we've arrived here, we didn't find the abbreviation in
|
|
Packit |
95306a |
# the current year, so we need to go back in time.
|
|
Packit |
95306a |
|
|
Packit |
95306a |
my $best_off = "";
|
|
Packit |
95306a |
my $best_date = "0001010100:00:00";
|
|
Packit |
95306a |
|
|
Packit |
95306a |
print ":: Abbrev = $abbrev...\n" if ($DEBUG);
|
|
Packit |
95306a |
|
|
Packit |
95306a |
ZONE:foreach my $zone (@zone) {
|
|
Packit |
95306a |
my @period = $tz->periods($zone,undef,$year);
|
|
Packit |
95306a |
while (@period) {
|
|
Packit |
95306a |
my $period = pop(@period);
|
|
Packit |
95306a |
|
|
Packit |
95306a |
my @per = @$period;
|
|
Packit |
95306a |
my $date = $per[10];
|
|
Packit |
95306a |
my $abb = lc($per[4]);
|
|
Packit |
95306a |
next if ($abb ne $abbrev);
|
|
Packit |
95306a |
my $off = $per[3];
|
|
Packit |
95306a |
my ($h,$m,$s) = @$off;
|
|
Packit |
95306a |
$h += 0;
|
|
Packit |
95306a |
next if ($s != 0);
|
|
Packit |
95306a |
|
|
Packit |
95306a |
my $sign;
|
|
Packit |
95306a |
if ($h < 0 ||
|
|
Packit |
95306a |
($h == 0 && $m < 0)) {
|
|
Packit |
95306a |
$h *= -1;
|
|
Packit |
95306a |
$m *= -1;
|
|
Packit |
95306a |
$sign = "-";
|
|
Packit |
95306a |
} else {
|
|
Packit |
95306a |
$sign = "+";
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
$h = "0$h" if (length($h) == 1);
|
|
Packit |
95306a |
$m = "0$m" if (length($m) == 1);
|
|
Packit |
95306a |
|
|
Packit |
95306a |
if ($date lt $best_date) {
|
|
Packit |
95306a |
print ":: $zone => $best_off [ $best_date ]\n" if ($DEBUG);
|
|
Packit |
95306a |
next ZONE;
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
|
|
Packit |
95306a |
$best_off = "$sign$h$m";
|
|
Packit |
95306a |
$best_date = $date;
|
|
Packit |
95306a |
|
|
Packit |
95306a |
print ":: $zone => $best_off [ $best_date ] ***\n" if ($DEBUG);
|
|
Packit |
95306a |
next ZONE;
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
|
|
Packit |
95306a |
if ($best_off) {
|
|
Packit |
95306a |
$off{$abbrev} = $best_off;
|
|
Packit |
95306a |
print " $abbrev" . " "x(6-length($abbrev)) . " $best_off\n";
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
next ABBREV;
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
|
|
Packit |
95306a |
print "));
|
|
Packit |
95306a |
|
|
Packit |
95306a |
$podstr
|
|
Packit |
95306a |
|
|
Packit |
95306a |
=head1 TIMEZONES
|
|
Packit |
95306a |
|
|
Packit |
95306a |
The following timezones are defined:
|
|
Packit |
95306a |
|
|
Packit |
95306a |
";
|
|
Packit |
95306a |
|
|
Packit |
95306a |
foreach my $abb (sort keys %off) {
|
|
Packit |
95306a |
my $off = $off{$abb};
|
|
Packit |
95306a |
print " " . uc($abb) . " "x(6-length($abb)) . " $off\n";
|
|
Packit |
95306a |
}
|
|
Packit |
95306a |
|
|
Packit |
95306a |
print "
|
|
Packit |
95306a |
|
|
Packit |
95306a |
=head1 LICENSE
|
|
Packit |
95306a |
|
|
Packit |
95306a |
This script is free software; you can redistribute it and/or modify it
|
|
Packit |
95306a |
under the same terms as Perl itself.
|
|
Packit |
95306a |
|
|
Packit |
95306a |
=head1 AUTHOR
|
|
Packit |
95306a |
|
|
Packit |
95306a |
Sullivan Beck (sbeck\@cpan.org)
|
|
Packit |
95306a |
|
|
Packit |
95306a |
=cut
|
|
Packit |
95306a |
|
|
Packit |
95306a |
1;
|
|
Packit |
95306a |
";
|
|
Packit |
95306a |
|
|
Packit |
95306a |
# Local Variables:
|
|
Packit |
95306a |
# mode: cperl
|
|
Packit |
95306a |
# indent-tabs-mode: nil
|
|
Packit |
95306a |
# cperl-indent-level: 3
|
|
Packit |
95306a |
# cperl-continued-statement-offset: 2
|
|
Packit |
95306a |
# cperl-continued-brace-offset: 0
|
|
Packit |
95306a |
# cperl-brace-offset: 0
|
|
Packit |
95306a |
# cperl-brace-imaginary-offset: 0
|
|
Packit |
95306a |
# cperl-label-offset: 0
|
|
Packit |
95306a |
# End:
|