From 2ef9a451e937ef9fb4708c5ce0e7b33d51693e3d Mon Sep 17 00:00:00 2001 From: Gavin Carr Date: Mon, 29 Oct 2007 22:31:41 +0000 Subject: [PATCH] Fix iso8601 format in storydate. --- gavinc/storydate | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gavinc/storydate b/gavinc/storydate index 0341ea0..35c060b 100644 --- a/gavinc/storydate +++ b/gavinc/storydate @@ -36,7 +36,7 @@ use vars qw( rfc822 => "%a, %d %b %Y %T %z", # ISO 8601 format (localtime, including time zone offset) # Format is YYYY-MM-DDThh:mm:ssTZD per http://www.w3.org/TR/NOTE-datetime - iso8601 => "%Y-%m-%dT%T %z", + iso8601 => "%Y-%m-%dT%T%z", ); sub start { @@ -93,12 +93,20 @@ sub get_story_dates { sub format_date { my ($format, $time, $use_gmtime) = @_; return unless $format; + + my $date = ''; if ($format =~ m/%/) { - return strftime($format, $time, $use_gmtime); + $date = strftime($format, $time, $use_gmtime); } elsif ($strftime_formats{ $format }) { - return strftime($strftime_formats{ $format }, $time, $use_gmtime); + $date = strftime($strftime_formats{ $format }, $time, $use_gmtime); + } + # Hack to handle the fact that ISO8601 dates require a : in the timezone, which strftime doesn't support + if ($format eq 'iso8601') { + $date =~ s/(\d)(\d{2})$/$1:$2/; } + + return $date; } # strftime wrapper, using the first strftime() it finds in @strftime_modules -- 2.30.2