我有两个只包含时间戳的字符串,看起来像这样 - my $t = "2014-11-28 00:00:00.000";
如何在可读时间(天,小时,分钟,秒)之间获得时间差,而不是秒。我是新人,我在这方面遇到了很大的困难。每篇博客或文章都告诉我做不同的事情。有些事情是无法完成的,因为我没有这些模块。我甚至无法将模块安装到perl中,因为我正在处理的计算机上有许多珍珠版本。那么,cpan>安装一些:: modlue没有帮助。
请教我如何做到这一点。 请尝试使用核心perl。否则,我将不得不花费更多时间将perl模块安装到正确的perl
我开始编写一些代码,但它错了,没用 -
use strict;
use warnings;
use Time::Local;
sub secondsToTime{
my $inSeconds = shift;
my $days = int($inSeconds/(24*60*60));
my $hours = ($inSeconds/(60*60))%24;
my $mins = ($inSeconds/60)%60;
my $sec = $inSeconds%60;
my $time = "$days days, $hours hours, $mins mins, $sec seconds";
return $time;
}
# EXAMPLE timelocal( $sec, $min, $hour, $mday, $mon, $year );
my @today = localtime();
print "@today\n";
my $currentTime = timelocal(@today);
#my @t = (0, 00, 13, 28, 11, 2014);
#$currentTime = timelocal(@t);
my @birthday = (0, 00, 12, 28, 11, 2014);
my $birthTime = timelocal(@birthday);
my $sec = ($currentTime - $birthTime);
my $time = secondsToTime($sec);
print "My age = $time\n";
答案 0 :(得分:3)
您似乎不想帮助我们了解您的需求。
此计划将打印2014-11-28T00:00:00.000Z
和2014-11-28T00:00:00.000Z
之间的差异。
use strict;
use warnings;
use Time::Piece;
my $start = '2014-11-28T00:00:00.000Z';
my $end = '2014-11-28T00:00:00.000Z';
print difference($start, $end);
sub difference {
my ($beg, $end) = map Time::Piece->strptime(s/\.\d*Z?\z//r, '%Y-%m-%dT%H:%M:%S'), @_;
($end-$beg)->pretty;
}
<强>输出强>
0 seconds