Perl - 减去分钟数

时间:2014-05-30 21:50:27

标签: perl

minute_end - minute_start

示例:我在3:50开始计时,并在4:10停止。只看几分钟差异,差异是20分钟,这就是我想要的。但是,50-10是40.我如何解释这种情况?我确定它是if语句,但我不知道如何开始。

4 个答案:

答案 0 :(得分:2)

也许您应该从一开始就使用time跟踪事情?

但是,您可以使用Time::Piece解析这些字符串以计算差异:

use strict;
use warnings;

use Time::Piece;

my $start = Time::Piece->strptime('3:50', "%H:%M");
my $stop = Time::Piece->strptime('4:10', "%H:%M");

my $diff = $stop - $start;

print $diff->minutes;

输出:

20

答案 1 :(得分:2)

这很粗糙,但可能已经足够了。

my $start_time = time;

# ...

my $end_time = time;
my $seconds_run = $end_time - $start_time;
my $minutes_run = $seconds_run / 60;

要获得更精确的时间安排,请参阅Time::HiRes

答案 2 :(得分:1)

你可以像这样分配当前的本地日期,我修改米勒的版本:

use strict;
use warnings;

use Time::Piece;
use POSIX qw(strftime);

my $time1 = strftime("%H:%M", localtime(time));

# do something or wait

my $time2 = strftime("%H:%M", localtime(time));

my $start = Time::Piece->strptime($time1, "%H:%M");
my $stop = Time::Piece->strptime($time2, "%H:%M");

my $diff = $stop - $start;

print $diff->minutes;

答案 3 :(得分:0)

我找到了问题的答案,而且很简单。这是我原本想要做的事情,但是在我浏览答案时遇到它并没有点击。

如果我minute_end - minute_start并且答案是否定的,我只需添加60分钟即可得到正确答案。

即:

10 - 50 = -40
-40 + 60 = 20