Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中,如果日期超过5天,如何标记日期?_Perl - Fatal编程技术网

在perl中,如果日期超过5天,如何标记日期?

在perl中,如果日期超过5天,如何标记日期?,perl,Perl,我知道如何将过去的日期标记为黄色: perl -MTime::Piece -pe ' BEGIN {$today = localtime->ymd." ".localtime->hms} @days = $_ =~ /<td>([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2})<\/td>/g; for $d (@days) { $_ =~ s!$d!<font style=BA

我知道如何将过去的日期标记为黄色:

perl -MTime::Piece -pe '
    BEGIN {$today = localtime->ymd." ".localtime->hms}
    @days = $_ =~ /<td>([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2})<\/td>/g;
    for $d (@days) {
      $_ =~ s!$d!<font style=BACKGROUND-COLOR:yellow>$d</font>!g if $d lt $today;
      }' foo.html > foo-TMP.html
mv foo-TMP.html foo.html
因此,以下示例日期将标记为黄色:

bla bla随机字符串此处2014.05.21 16:32bla-bla随机字符串此处
bla-bla随机字符串此处2014.07.15 14:59 bla-bla随机字符串此处
以下几点应该放在一边:

bla bla随机字符串此处2014.07.15 15:01bla-bla随机字符串此处
bla bla随机字符串此处2014.07.18 19:14bla-bla随机字符串此处
根据“以perlfunc中记录的方式使用localtime/gmtime仍将返回您期望的结果”,并揭示
localtime()
接受一个参数,自纪元起的秒数,默认值(如果您不提供)是
time()
的返回值

五天是432000秒。如果更改初始参考点:

BEGIN {
    $then = localtime(time() - 432000);
    $day = $then->ymd." ".$then->hms
}

$day
代替
$today
,你应该得到你想要的。

如果你
先用Time::Seconds
(它是
Time::Piece
的配套模块),你可以用
一天*5
代替神奇的
432000
。此外,您不必调用
time
,因为
time::Piece
重载整数运算,您只需编写
my$then=localtime()-ONE_DAY*5
请使用类和CSS文件标记相关日期,而不是将CSS直接嵌入HTML。