summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2024-04-02 14:40:15 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2024-04-02 14:40:15 +0200
commitfb76c6eb57c20177eca19d6fe03a573f378654f8 (patch)
treee5d05b7e2e93600c50d99c6c99dc7b590db150bc
parent748fbc7695bafd467bf8e61d160971bcf5139d15 (diff)
Use service-specific time zones if ≠ Europe/Berlin
-rwxr-xr-xbin/hafas-m12
-rw-r--r--lib/Travel/Status/DE/HAFAS.pm8
-rw-r--r--lib/Travel/Status/DE/HAFAS/Journey.pm3
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{ ^ [!] (?<query> .*) $ }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{ ^ (?<day> \d{1,2} ) [.] (?<month> \d{1,2} ) [.] (?<year> \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);
}