如何在perl中更改日期/时间字符串的格式? (具体问题)

时间:2011-05-03 13:22:30

标签: perl string datetime formatting

我有一个从日志文件解析的示例字符串,格式如下:

“Mon Apr 25 17:47:19 2011”

我希望它看起来像

“Mon Apr 25 05:47 PM 2011”

我一般如何做到这一点? (即每次当然不会是相同的字符串)。

非常感谢。

1 个答案:

答案 0 :(得分:10)

如果有疑问,与DateTime一起使用通常是一个不错的选择。在这种情况下,你可以:

use DateTime;
use DateTime::Format::Strptime;

my $parser = DateTime::Format::Strptime->new(
    pattern => '%a %b %d %H:%M:%S %Y'
);

my $dt = $parser->parse_datetime('Mon Apr 25 17:47:19 2011');
print $dt->strftime('%a %b %d %I:%M%p %Y'), "\n";

如果您需要有关模式的信息,请参阅the strftime docsDateTime Manual中的类似部分。

您也可以使用POSIX中的strftime函数和POSIX::strptime中的strptime函数来处理此问题,但界面不太令人愉快。