5

在 Perl 中如何检查今天是否是星期一?

需要安装哪些模块?

谁能帮我举个例子?

4

3 回答 3

7

最简单的方法是使用localtime. 它返回一个值列表。其中第七个是工作日,从星期日开始。因此,Monday 的值为 1。如果没有给出参数,它使用当前时间 ( time),这就是您想要的。

if ( (localtime)[6] == 1) {
  print "Today is Monday!\n";
}

由于我们只需要索引 6(第 7 个返回值),因此我们可以使用括号localtime将其强制放入一个列表中,并直接从该列表中访问该索引。我们可以将该标量值与 进行比较1

localtime是一个内置函数。不需要任何额外的模块,甚至不需要包含在 Perl Core 中的模块。这只是开箱即用。

于 2013-05-29T09:38:08.317 回答
4

如果您想要更“人性化”(实际上是面向对象)的方式来访问来自 的数据localtime,请使用Time::Piece的版本localtimeTime::Piece是 perl 5.10 以来的核心模块):

use v5.10;
use Time::Piece qw(localtime);

my $t = localtime;
if ($t->day_of_week == 1) {
   say 'Today is Monday, too!';
}

您还可以查看文档并使用:

$t->wday                # 1 = Sunday
$t->_wday               # 0 = Sunday
$t->day_of_week         # 0 = Sunday
$t->wdayname            # Tue
$t->day                 # same as wdayname
$t->fullday             # Tuesday
于 2013-05-29T10:05:47.647 回答
4

您还可以使用 DateTime 模块。

use DateTime;

if ( DateTime->today->day_of_week == 1 ) {
    print "Today is monday\n"
}

如果您的星期一从 0 开始,您可以使用 day_of_week_0

if ( DateTime->today->day_of_week_0 == 0 ) {
    print "Today is monday\n"
}
于 2013-05-29T10:11:18.883 回答