Unverified Commit 323e40ca authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

deal with invalid timestamps during DST transition

parent 9b7cb825
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -520,7 +520,7 @@ for my $connection ( $ris->connections ) {

		printf(
			"%s%s  %s  %s%s\n",
			$segment->dep->strftime('%H:%M'),
			$segment->dep ? $segment->dep->strftime('%H:%M') : q{??:??},
			$max_delay_digits
			? q{ } . format_delay( $segment->dep_delay, $max_delay_digits )
			: q{},
@@ -547,7 +547,7 @@ for my $connection ( $ris->connections ) {
		printf(
			"%s%s%s%s  %s  %s%s\n",
			$segment->is_unlikely ? $output_critical                 : q{},
			$segment->arr->strftime('%H:%M'),
			$segment->arr         ? $segment->arr->strftime('%H:%M') : q{??:??},
			$segment->is_unlikely ? $output_reset                    : q{},
			$max_delay_digits
			? q{ } . format_delay( $segment->arr_delay, $max_delay_digits )
+16 −6
Original line number Diff line number Diff line
@@ -46,19 +46,21 @@ sub new {
		journey_id  => $json->{journeyId},
	};

	bless( $ref, $obj );

	if ( my $ts = $json->{abfahrtsZeitpunkt} ) {
		$ref->{sched_dep} = $strptime->parse_datetime($ts);
		$ref->{sched_dep} = $ref->parse_datetime( $strptime, $ts );
	}
	if ( my $ts = $json->{ezAbfahrtsZeitpunkt} ) {
		$ref->{rt_dep} = $strptime->parse_datetime($ts);
		$ref->{rt_dep} = $ref->parse_datetime( $strptime, $ts );
	}
	$ref->{dep} = $ref->{rt_dep} // $ref->{sched_dep};

	if ( my $ts = $json->{ankunftsZeitpunkt} ) {
		$ref->{sched_arr} = $strptime->parse_datetime($ts);
		$ref->{sched_arr} = $ref->parse_datetime( $strptime, $ts );
	}
	if ( my $ts = $json->{ezAnkunftsZeitpunkt} ) {
		$ref->{rt_arr} = $strptime->parse_datetime($ts);
		$ref->{rt_arr} = $ref->parse_datetime( $strptime, $ts );
	}
	$ref->{arr} = $ref->{rt_arr} // $ref->{sched_arr};

@@ -162,11 +164,19 @@ sub new {
		$ref->{arr_platform} = $ref->{route}[-1]->platform;
	}

	bless( $ref, $obj );

	return $ref;
}

sub parse_datetime {
	my ( $self, $strp, $dt_str ) = @_;
	my $ret;
	eval { $ret = $strp->parse_datetime($dt_str); };
	if ($@) {
		warn("Cannot parse datetime $dt_str: $@");
	}
	return $ret;
}

sub attributes {
	my ($self) = @_;