用perl计算日期时间



我是perl的新手,正在尝试编写一个可以检查的脚本

最后一次看到/天/小时和分钟

我已经试过了。

但我需要帮助才能使它正常运行

#!/usr/bin/perl

use DateTime;
my $Datetime = DateTime->now;
my $date = $Datetime->ymd;   
my $time = $Datetime->hms;
$Seen_time = "11:50:02";
$Seen_day = "2022-01-12";
if ($Seen_time eq $time) {
print "His Onlinen";
}
elsif  ($Seen_time ne $time) {

# calculate how many minutes has passed from current time and seen time
print "He was online 3 minutes or hours backn";
}
elsif  ($Seen_day)  {

# calculate days from date 
print "he was online 2 days backn";
}
else {
print "we are going to moon soonn";
}

下面是一个使用DateTime::Format::Human::Duration的非常粗略的实现https://metacpan.org/pod/DateTime::Format::Human::Duration正如Håkon Hægland所建议的那样,您需要微调输出:

#!/usr/bin/perl
use DateTime;
use warnings;
use strict;
use diagnostics;
use DateTime::Duration;
use DateTime::Format::Human::Duration;
my $Datetime = DateTime->now;
my $Seen_time = "11:50:02";
my $Seen_day = "2022-01-12";
# You probably need to take the above and get it in a DateTime object this is just for the example:
my $seen = DateTime->new(year => 2022, day => 12, month => 1, hour => 11, minute => 50, second => 2);
#you could use the DateTime->compare method to compare two DateTime objects. The semantics are compatible with Perl's sort function; 
#it returns -1 if $seen < $Datetime etc.
my $cmp = DateTime->compare( $seen, $Datetime );
if (!$cmp) {
print "He is Onlinen";
}
elsif  ($cmp == -1) {
my $d = DateTime::Duration->new();
my $span = DateTime::Format::Human::Duration->new();
my $dur = $Datetime - $seen;
# You can fine tune this output to just me hours or whatever:
print "He was online " . $span->format_duration($dur) .  " ago n";
}

else {
print "We are going to moon soonn";
}

最新更新