summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-07-05 19:05:11 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2025-07-05 19:05:11 +0200
commit57378c55e4fb70a6ca789d1c3cbfb879b306dd27 (patch)
tree79be6fb5874d4179ff05cb32f49ed624191c91ad
parente5edf5b81567e1f79db64499c2ac3554d7508d81 (diff)
edit_journey: support timestamps with sub-minute resolution
-rwxr-xr-xlib/Travelynx/Controller/Traveling.pm19
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm
index 74bb5c6..7cd1e36 100755
--- a/lib/Travelynx/Controller/Traveling.pm
+++ b/lib/Travelynx/Controller/Traveling.pm
@@ -2380,7 +2380,12 @@ sub edit_journey {
my $error = undef;
if ( $self->param('action') and $self->param('action') eq 'save' ) {
- my $parser = DateTime::Format::Strptime->new(
+ my $parser_sec = DateTime::Format::Strptime->new(
+ pattern => '%FT%H:%M:%S',
+ locale => 'de_DE',
+ time_zone => 'Europe/Berlin'
+ );
+ my $parser_min = DateTime::Format::Strptime->new(
pattern => '%FT%H:%M',
locale => 'de_DE',
time_zone => 'Europe/Berlin'
@@ -2391,7 +2396,8 @@ sub edit_journey {
for my $key (qw(sched_departure rt_departure sched_arrival rt_arrival))
{
- my $datetime = $parser->parse_datetime( $self->param($key) );
+ my $datetime = $parser_sec->parse_datetime( $self->param($key) )
+ // $parser_min->parse_datetime( $self->param($key) );
if ( $datetime and $datetime->epoch ne $journey->{$key}->epoch ) {
$error = $self->journeys->update(
uid => $uid,
@@ -2483,8 +2489,13 @@ sub edit_journey {
for my $key (qw(sched_departure rt_departure sched_arrival rt_arrival)) {
if ( $journey->{$key} and $journey->{$key}->epoch ) {
- $self->param(
- $key => $journey->{$key}->strftime('%FT%H:%M') );
+ if ( $journey->{$key}->second ) {
+ $self->param(
+ $key => $journey->{$key}->strftime('%FT%H:%M:%S') );
+ }
+ else {
+ $self->param( $key => $journey->{$key}->strftime('%FT%H:%M') );
+ }
}
}