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

时间:2014-07-20 13:09:57

标签: 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=BACKGROUND-COLOR:yellow>$d</font>!g if $d lt $today;
      }' foo.html > foo-TMP.html
mv foo-TMP.html foo.html

问题但是,如何标记超过5天的日期?

示例:

It's: 2014.07.20 15:00

因此,以下示例日期将标记为黄色:

bla-bla random string here<td>2014.05.21 16:32</td>bla-bla random string here
bla-bla random string here<td>2014.07.15 14:59</td>bla-bla random string here

以下内容应该单独列出:

bla-bla random string here<td>2014.07.15 15:01</td>bla-bla random string here
bla-bla random string here<td>2014.07.18 19:14</td>bla-bla random string here

1 个答案:

答案 0 :(得分:6)

根据Time::Piece docs,&#34;在perlfunc中记录的方式使用localtime / gmtime仍将返回您期望的内容&#34;,而the perlfunc docs显示localtime()需要一个参数,自纪元以来的秒数,默认值(如果你不提供一个)是time()的返回值。

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

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

使用$day代替$today,你应该得到你想要的东西。