Re: [PATCH (BUGFIX)] gitweb: Fix handling of fractional timezones in parse_date
- From
Kevin Cernekee <cernekee@gmail.com>
- Date
- Mar 25, 2011, 16:26 UTC
- Message-ID
- <AANLkTik5bLaR_0uhqGrNWW6U7z82KfmpNTyvRwkKFfj+@mail.gmail.com>
- In-Reply-To
- <201103251620.28811.jnareb@gmail.com>
2011/3/25 Jakub Narebski <jnareb@gmail.com>:
Show 8 quoted lines
> @@ -2921,8 +2921,10 @@ sub parse_date {
> $date{'iso-8601'} = sprintf "%04d-%02d-%02dT%02d:%02d:%02dZ",
> 1900+$year, 1+$mon, $mday, $hour ,$min, $sec;
>
> - $tz =~ m/^([+\-][0-9][0-9])([0-9][0-9])$/;
> - my $local = $epoch + ((int $1 + ($2/60)) * 3600);
> + my ($tz_sign, $tz_hour, $tz_min) =
> + ($tz =~ m/^([+\-])([0-9][0-9])([0-9][0-9])$/);It's just a matter of personal preference, but I would find this regexp slightly easier to read:
+ ($tz =~ m/^([+\-])([0-9]{2})([0-9]{2})$/);> + $tz_sign = ($tz_sign eq '-' ? -1 : +1); > + my $local = $epoch + $tz_sign*($tz_hour + ($tz_min/60.0))*3600;
If you wanted to avoid floats, you could do something like:
+ my $local = $epoch + $tz_sign * ($tz_hour * 3600 + $tz_min * 60);