你如何阅读Perl中的系统时间和日期?

时间:2009-01-28 14:23:44

标签: perl datetime

我需要读取系统时钟(时间和日期)并在Perl中以人类可读的格式显示它。

目前,我正在使用以下方法(我发现here):

#!/usr/local/bin/perl
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
$year = 1900 + $yearOffset;
$theTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year";
print $theTime; 
  

运行程序时,您应该看到更加可读的日期和时间,如下所示:

9:14:42, Wed Dec 28, 2005 

这似乎更像是为了说明而不是实际的生产代码。有更规范的方式吗?

5 个答案:

答案 0 :(得分:19)

使用localtime功能:

  

在标量上下文中,localtime()返回   ctime(3)值:

$now_string = localtime;  # e.g., "Thu Oct 13 04:54:34 1994"

答案 1 :(得分:14)

您可以使用localtime来获取时间,并使用POSIX模块strftime对其进行格式化。

虽然使用Date :: Format及其strftime很好,因为它使用较少的开销,但POSIX模块与Perl一起分发,因此几乎可以保证在给定的系统上。

use POSIX;
print POSIX::strftime( "%A, %B %d, %Y", localtime());
# Should print something like Wednesday, January 28, 2009
# ...if you're using an English locale, that is.
# Note that this and Date::Format's strftime are pretty much identical

答案 2 :(得分:8)

与其他人提到的一样,您可以使用localtime,但我会使用Date::Format解析它。它会以几乎任何你需要的方式为你提供格式化的时间戳。

答案 3 :(得分:8)

正如其他人所说的那样,“本地时间”是你如何以简单直接的方式驯服约会。

但只是给你一个选择。 DateTime module。{{3}}。这个模块已成为我的最爱。

use DateTime;
my $dt = DateTime->now;

my $dow = $dt->day_name;
my $dom = $dt->mday;
my $month = $dt->month_abbr;
my $chr_era = $dt->year_with_christian_era;

print "Today is $dow, $month $dom $chr_era\n";

这将打印“今天是2009年1月28日星期三”。只是为了展示它可以做的许多事情中的一些。

use DateTime;
print DateTime->now->ymd;

打印出“2009-01-28”

答案 4 :(得分:0)

最简单的单行打印语句以清晰易读的格式打印本地时间:

    flag    ETA Course / Speed  Last report
0   Denmark Nov 24, 00:01   241.6° / 12.0 kn    Nov 22, 2019 09:04 UTC
1   Denmark Nov 23, 11:30   184.8° / 13.9 kn    Nov 22, 2019 09:07 UTC