localtime EXPR
localtime

將 time 函數傳回的時間轉換為 9 個元素的清單,並針對當地時區分析時間。通常使用方式如下

#     0    1    2     3     4    5     6     7     8
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
                                            localtime(time);

所有清單元素都是數字,且直接來自 C 的 `struct tm`。$sec$min$hour 是指定時間的秒、分和小時。

$mday 是該月的第幾天,而 $mon 是月份,範圍為 0..11,其中 0 表示 1 月,11 表示 12 月。這使得從清單中取得月份名稱變得容易

my @abbr = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
print "$abbr[$mon] $mday";
# $mon=9, $mday=18 gives "Oct 18"

$year 包含自 1900 年以來的年數。若要取得完整年份,請寫入

$year += 1900;

若要取得年份的最後兩個數字(例如 2001 年的「01」),請執行

$year = sprintf("%02d", $year % 100);

$wday 是星期幾,其中 0 表示星期日,3 表示星期三。$yday 是該年的第幾天,範圍為 0..364(或閏年的 0..365)。

如果指定時間發生在夏令時間生效期間,則 $isdst 為 true,否則為 false。

如果省略 EXPR,localtime 會使用目前時間(由 time 傳回)。

在純量內容中,localtime 會傳回 ctime(3)

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

此純量值始終為英文,且與地區設定相關。若要取得類似但與地區設定相關的日期字串,請嘗試例如

use POSIX qw(strftime);
my $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
# or for GMT formatted appropriately for your locale:
my $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;

C$now_string> 將根據程式或執行緒執行的目前 LC_TIME 地區設定格式化。請參閱 perllocale 以了解如何設定和變更該地區設定。請注意,%a%b(星期和月份的簡寫)不一定有三個字元寬。

Time::gmtimeTime::localtime 模組分別提供方便的按名稱存取機制,可存取 gmtimelocaltime 函數。

對於全面的日期和時間表示法,請查看 CPAN 上的 DateTime 模組。

若要使用 GMT 而非當地時間,請使用 gmtime 內建函數。

另請參閱 Time::Local 模組(用於將秒、分鐘、小時等轉換回 time 傳回的整數值),以及 POSIX 模組的 mktime 函數。

移植性問題:perlport 中的「localtime」