Perl - 如何转换日期?

标签 perl date format

如何将日期格式 YYYY-MM-DDTHH:MM:SSZ 转换为 YYYY-MM-DD HH:MM + 8 小时?

例如:

Input: 2011-07-07T18:05:45Z

Output: 2011-07-08 02:05

最佳答案

让我们从 Rahul 的片段开始,并添加日期数学和输出格式...

use DateTime; 
use DateTime::Format::ISO8601;

use DateTime::Format::Strptime;

my $string = '2011-07-07T18:05:45Z';
my $dt = DateTime::Format::ISO8601->parse_datetime( $string ); 
die "Impossible time" unless $dt;

my $formatter = new DateTime::Format::Strptime(pattern => '%Y-%m-%d %T');
$dt->add( hours => 8 )->set_formatter($formatter);
print "$dt\n";

我添加了 DateTime::Format::Strptime 的使用,以便指定所需的输出格式。

然后我又添加了三行:
  • 首先,我创建一个格式化程序,并为其提供我想要的输出模式。
  • 接下来我将八小时添加到原始日期,并分配输出
    格式化程序通过将 set_formatter() 调用链接到 add() 调用。
  • 然后我打印出来。
  • 关于Perl - 如何转换日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615841/

    相关文章:

    regex - 如何将 perl 正则表达式替换编写为表达式中的函数?

    c# - 在服务器和客户端上一致地存储 DateTime

    java - EJBQL 日期比较

    image - C# 绘图程序将位图保存为不同的格式

    python - 格式化也可以为 None 的数值

    windows - Time::ParseDate 安装失败

    Perl - 我可以获得与脚本所在位置和执行位置相关的路径吗?

    sql-server - 区域日期格式和数据库日期格式的不同日期格式的 SQL Server 错误

    java - Visual Studio Code java格式文档大括号换行

    perl - 添加 MM::SS 时间,将它们相除并打印平均值