From fb76c6eb57c20177eca19d6fe03a573f378654f8 Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Tue, 2 Apr 2024 14:40:15 +0200 Subject: Use service-specific time zones if ≠ Europe/Berlin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/hafas-m | 12 ++++++++---- lib/Travel/Status/DE/HAFAS.pm | 8 ++++++-- lib/Travel/Status/DE/HAFAS/Journey.pm | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/bin/hafas-m b/bin/hafas-m index 8bed8e5..9b861a2 100755 --- a/bin/hafas-m +++ b/bin/hafas-m @@ -95,7 +95,9 @@ elsif ( $opt{station} =~ m{ ^ [!] (? .*) $ }x ) { } if ( $date or $time ) { - my $dt = DateTime->now( time_zone => 'Europe/Berlin' ); + my $desc = Travel::Status::DE::HAFAS::get_service($service) // {}; + my $dt + = DateTime->now( time_zone => $desc->{time_zone} // 'Europe/Berlin' ); if ($date) { if ( $date =~ m{ ^ (? \d{1,2} ) [.] (? \d{1,2} ) [.] (? \d{4})? $ }x @@ -355,7 +357,7 @@ if ( $opt{journeyMatch} ) { say $result->id; print $result->name; if ( $result->number ) { - printf( " | Zug %s", $result->number ); + printf( " | Nr %s", $result->number ); } if ( $result->line_no ) { printf( " | Linie %s", $result->line_no ); @@ -396,7 +398,7 @@ elsif ( $opt{journey} ) { printf( "%s → %s", $result->name, $result->route_end ); if ( $result->number ) { - printf( " / Zug %s", $result->number ); + printf( " / Nr %s", $result->number ); } if ( $result->line_no ) { printf( " / Linie %s", $result->line_no ); @@ -446,7 +448,9 @@ elsif ( $opt{journey} ) { } $prev_prod = 0; - my $now = DateTime->now( time_zone => 'Europe/Berlin' ); + my $desc = Travel::Status::DE::HAFAS::get_service($service) // {}; + my $now + = DateTime->now( time_zone => $desc->{time_zone} // 'Europe/Berlin' ); my $mark_stop = 0; for my $i ( reverse 1 .. scalar $result->route ) { my $stop = ( $result->route )[ $i - 1 ]; diff --git a/lib/Travel/Status/DE/HAFAS.pm b/lib/Travel/Status/DE/HAFAS.pm index 0017dca..bc1a423 100644 --- a/lib/Travel/Status/DE/HAFAS.pm +++ b/lib/Travel/Status/DE/HAFAS.pm @@ -63,6 +63,7 @@ my %hafas_instance = ( stopfinder => 'https://planner.bart.gov/bin/ajax-getstop.exe', mgate => 'https://planner.bart.gov/bin/mgate.exe', name => 'Bay Area Rapid Transit', + time_zone => 'America/Los_Angeles', productbits => [ [ _ => undef ], [ _ => undef ], @@ -118,6 +119,7 @@ my %hafas_instance = ( 'https://journeyplanner.irishrail.ie/bin/ajax-getstop.exe', mgate => 'https://journeyplanner.irishrail.ie/bin/mgate.exe', name => 'Iarnród Éireann', + time_zone => 'Europe/Dublin', productbits => [ [ _ => undef ], [ ic => 'national trains' ], @@ -215,6 +217,7 @@ my %hafas_instance = ( mgate => 'https://fahrplan.oebb.at/bin/mgate.exe', stopfinder => 'https://fahrplan.oebb.at/bin/ajax-getstop.exe', name => 'Österreichische Bundesbahnen', + time_zone => 'Europe/Vienna', productbits => [ [ ice_rj => 'long distance trains' ], [ sev => 'rail replacement service' ], @@ -328,7 +331,8 @@ sub new { confess("The service '$service' is not supported"); } - my $now = DateTime->now( time_zone => 'Europe/Berlin' ); + my $now = DateTime->now( time_zone => $hafas_instance{$service}{time_zone} + // 'Europe/Berlin' ); my $self = { active_service => $service, arrivals => $conf{arrivals}, @@ -482,7 +486,7 @@ sub new { $self->{strptime_obj} //= DateTime::Format::Strptime->new( pattern => '%Y%m%dT%H%M%S', - time_zone => 'Europe/Berlin', + time_zone => $hafas_instance{$service}{time_zone} // 'Europe/Berlin', ); my $json = $self->{json} = JSON->new->utf8; diff --git a/lib/Travel/Status/DE/HAFAS/Journey.pm b/lib/Travel/Status/DE/HAFAS/Journey.pm index 14530ed..223dc13 100644 --- a/lib/Travel/Status/DE/HAFAS/Journey.pm +++ b/lib/Travel/Status/DE/HAFAS/Journey.pm @@ -94,7 +94,8 @@ sub new { } $datetime_ref = DateTime::Format::Strptime->new( pattern => $parse_fmt, - time_zone => 'Europe/Berlin' + time_zone => $hafas->get_active_service->{time_zone} + // 'Europe/Berlin' )->parse_datetime($date_ref); } -- cgit v1.2.3