2013-04-30 218 views
2

我有一个具有毫秒值的文件,例如“1366535578”,我需要将其转换为日期时间。在python我可以做如下在毫秒中将毫秒转换为日期时间

import datetime 
print datetime.datetime.fromtimestamp(1366535578) 

如何可以把它用Perl来实现,使其显示格式为“20130421181258”

任何帮助表示赞赏。

+0

这不是毫秒。自从时代以来,这是**秒**。 – 2013-04-30 08:55:24

+0

如果以下任何答案对您有帮助,请接受他们或告诉我们什么不起作用。 – 2013-04-30 09:18:36

回答

2

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

您可以使用此:

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

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

这会给你YYYY-mm-dd hh:mm:ss的格式,如果你希望你可以删除hiphens来获得你的格式或安排它到达你的格式。

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

+0

..或者你可以删除格式字符串本身的连字符和冒号。 – 2013-04-30 08:52:45

+0

@DarkCthulhu:我有点匆忙,所以没有那么做。我将根据OP的格式字符串进行编辑。 – 2013-04-30 08:54:12

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

2

核心Time::Piece模块将为您做到这一点。它覆盖内置localtime功能,使得它具有strftime方法:

use Time::Piece; 

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

输出

20130421101258