From ea0a3643c8c39e7a3e1df47261e70269dcf0f6a9 Mon Sep 17 00:00:00 2001 From: Chris Date: Tue, 4 Jun 2024 15:25:28 +0100 Subject: [PATCH] Avoid use of POSIX strftime to help with timezones --- lib/Webperl/Template.pm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/Webperl/Template.pm b/lib/Webperl/Template.pm index 50bd5f4..e444694 100644 --- a/lib/Webperl/Template.pm +++ b/lib/Webperl/Template.pm @@ -126,6 +126,7 @@ use Webperl::Utils qw(path_join superchomp); use Carp qw(longmess carp); use HTML::WikiConverter; use HTML::Entities; +use DateTime; use v5.12; use strict; @@ -899,13 +900,12 @@ sub ordinal { sub format_time { my $self = shift; my $time = shift; - my $format = shift; - # Fall back on the default if the user has not set a format. - $format = $self -> {"timefmt"} if(!defined($format)); - - my $datestr = strftime($format, localtime($time)); - $datestr =~ s/(\d+)\s*%o/ordinal($1)/ge; + my $format = shift // $self -> {"timefmt"}; + return "" unless($time); + my $datestr = eval { DateTime -> from_epoch(epoch => $time, time_zone = $self -> {"tz"} // "Europe/London") -> strftime($format); }; + return "" if($@); + return $datestr; }