将毫秒转换为perl中的datetime

时间:2013-04-30 08:43:03

标签: perl

我有一个带有毫秒值的文件,例如“1366535578”,我需要将其转换为datetime。在python我可以这样做

import datetime
print datetime.datetime.fromtimestamp(1366535578)

如何在perl中实现它以“20130421181258”格式显示

任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

毫秒实际上表示持续时间而不是时间。

您可以使用:

use POSIX qw( strftime );
my $formatted = strftime("%Y%m%d%H%M%S", localtime($ts/1000));

字符串strftime是你的毫秒字符串。

这会为您提供YYYY-mm-dd hh:mm:ss格式,如果您希望您可以移除hipns以获取您的格式或安排它到达您的格式。

注意:删除格式字符串中的hiphens和冒号。

答案 1 :(得分:2)

核心Time::Piece模块将为您完成此操作。它会覆盖内置的localtime函数,因此它具有strftime方法:

use Time::Piece;

print localtime(1366535578)->strftime('%Y%m%d%H%M%S');

<强>输出

20130421101258

答案 2 :(得分:1)

my @date = localtime(time);
$date[5] += 1900;
$date[4] += 1;
$date[2] = '0'.$date[2] if ($date[2] < 10);
$date[1] = '0'.$date[1] if ($date[1] < 10);
$date[4] = '0'.$date[4] if ($date[4] < 10);
$date[3] = '0'.$date[3] if ($date[3] < 10);
print join(@date,'');

http://perldoc.perl.org/functions/localtime.html