簡體   English   中英

如何在Perl腳本中將日期更改為瑞典時區?

[英]How can I change date to swedish time zone in a Perl script?

如何在Perl腳本中將格式為'20170119121941Z'的日期轉換為瑞典時區?

我當前的代碼段是:

sub get_Date {

my $content = shift;

my $iso8601 = DateTime::Format::ISO8601 -> new;
my $dt = $iso8601->parse_datetime( $content );
###Set the time zone to "Europe/Stockholm" .
$dt->set_time_zone("Europe/Stockholm");
my $dayofmonth = $dt->strftime("%d");
$dayofmonth =~ s/^0//;
my $hour = $dt->strftime("%I");
$hour =~ s/^0//;
my $ISODate = $dt->strftime("%b " . $dayofmonth . ", %Y, " . $hour . ":%M %p ", localtime(time));
return($ISODate);

}

您得到的輸出是

Invalid date format: 20170119121941Z

您的代碼因該消息而失敗,因為20170119121941Z與有效的ISO8601格式不匹配。

還有一個問題,您正確使用了strftime兩次,然后在第三次使用時做了些廢話。

解:

use strict;
use warnings;
use feature qw( say state );

use DateTime::Format::Strptime qw( );

sub localize_dt_str {
   my ($dt_str) = @_;

   state $format = DateTime::Format::Strptime->new(
      pattern  => '%Y%m%d%H%M%S%Z',
      on_error => 'croak',
   );

   my $dt = $format->parse_datetime($dt_str);
   $dt->set_time_zone('Europe/Stockholm');
   return $dt->strftime('%b %e, %Y, %l:%M %p');
}

say localize_dt_str('20170119121941Z');   # Jan 19, 2017,  1:19 PM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM