將 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::gmtime 和 Time::localtime 模組分別提供方便的按名稱存取機制,可存取 gmtime
和 localtime
函數。
對於全面的日期和時間表示法,請查看 CPAN 上的 DateTime 模組。
若要使用 GMT 而非當地時間,請使用 gmtime
內建函數。
另請參閱 Time::Local
模組(用於將秒、分鐘、小時等轉換回 time
傳回的整數值),以及 POSIX 模組的 mktime
函數。
移植性問題:perlport 中的「localtime」。