tz-erl: Include month and day in future 'until' check.
This commit is contained in:
parent
b36ea2cec2
commit
031652afd4
1 changed files with 24 additions and 3 deletions
27
db/tz-erl
27
db/tz-erl
|
@ -258,9 +258,13 @@ sub zone_line {
|
||||||
# We ignore any zone line that has a definite until (end) time that
|
# We ignore any zone line that has a definite until (end) time that
|
||||||
# is in the past.
|
# is in the past.
|
||||||
if (defined $until) {
|
if (defined $until) {
|
||||||
my $until_year = ($until =~ m/^(\d+)/)[0];
|
my ($until_year, $until_month, $until_day) = split_ymd($until);
|
||||||
if ($until_year >= $current_year) {
|
if (($until_year > $current_year) ||
|
||||||
die "until $until not handled";
|
(($until_year == $current_year) &&
|
||||||
|
(($until_month > $current_month) ||
|
||||||
|
(($until_month == $current_month) &&
|
||||||
|
($until_day >= $current_day))))) {
|
||||||
|
"future until \"$until\" not handled";
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -429,6 +433,23 @@ INIT {
|
||||||
%dow_from_name= map { $dow_to_name[$_] => $_ } (0..$#dow_to_name);
|
%dow_from_name= map { $dow_to_name[$_] => $_ } (0..$#dow_to_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub split_ymd {
|
||||||
|
my ($ymd) = @_;
|
||||||
|
$ymd =~ m/^(\d+)(?:\s+(\w+)(?:\s+(\d+)))?/
|
||||||
|
or die "parse \"$ymd\" for ymd failed";
|
||||||
|
my $year = $1;
|
||||||
|
my $month = do {
|
||||||
|
if (defined $2) {
|
||||||
|
defined $mon_from_name{$2} or die "parse \"$ymd\" for month failed";
|
||||||
|
$mon_from_name{$2};
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
my $day = defined $3 ? $3 : 0;
|
||||||
|
return ($year, $month, $day);
|
||||||
|
}
|
||||||
|
|
||||||
sub on_to_day_of_month {
|
sub on_to_day_of_month {
|
||||||
my ($on, $year, $month) = @_;
|
my ($on, $year, $month) = @_;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue