PerlならサンプルコードPerl入門

2008-10-09

localtime関数 - 現在の日付と時刻(ローカル時間)を取得する

  1. Perl
  2. 日付・時刻
  3. 関数
  4. localtime

 現在の日付と時刻を取得するにはlocaltime関数を使用します。各地域にあわせたローカル時間を取得できます。

my $localtime = localtime;

ローカル時間と協定世界時

 「太陽が一番高くなる時刻が正午(12:00)です」というふうに時刻を決めたとすると、各国では時刻が一致しないことになります。たとえば、日本が正午(12:00)のときは、地球の裏側は真夜中の12時です。

 このような時刻をローカル時間といいます。OSの時計はローカル時間を表示するように設定されています。

 また協定世界時という全世界で一致する時刻があります。この時刻は世界のどこから見ても同じです。

 日本の場合はこの協定世界時から9時間進んだ自国をローカル時間としています。

サンプル

 localtime関数を使ったサンプルです。

use strict;
use warnings;

print "(1)現在の日付と時刻(ローカル時間)を取得する。\n";

#    秒   分    時     日     月    年     曜日   年初か 夏時間を
#                                                 らの   適用して
#                                                 経過日 いるか
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;

# localtime関数からは1900年から数えた年が返却される。
$year += 1900;

# 月は0から始まるので、表示するときは1を加える。
$mon++;

# 日曜日は0になります。
my @day_of_week = qw/日 月 火 水 木 金 土/;

print "現在は、$year年$mon月$mday日 $hour時$min分$sec秒です。";
print "曜日は" . $day_of_week[$wday] . "曜日です。\n\n";
print "1年で数えると$yday日が経過しました\n\n";

if ($isdst) {
  print "現在夏時間が適用されいます。\n\n";
}
else {
  print "現在夏時間は適用されていません。\n\n";
}

print "(2)文字列として現在の日付(ローカル時間)を取得する。\n";
my $date_str = localtime;
print $date_str . "\n";

コード解説

現在の日付と時刻(ローカル時間)を取得する
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;

 現在の日付と時刻を取得するにはlocaltime関数を使用します。localtime関数は、日本人が時刻を取得したいと思ったときの順序と逆になっています。先頭から「秒分時日月年」の順です。

 年は1900年からの経過年ですので、取得した$yearに1900を加える必要があります。

$year += 1900;

 月は0から始まります。たとえば1月は0、2月は1のようになっていますので、1を加算する必要があります。

$mon++;

 曜日は0から始まり0は日曜日です。月曜日は1、火曜日は2というふうになります。曜日を表示するには、配列の添え字と曜日を対応づけた配列を作っておきます。

my @day_of_week = qw/日 月 火 水 木 金 土/;

 $ydayは、年の開始からの日数です。$isdstは夏時間(サマータイム)を適用しているかどうかです。

文字列として現在の日付(ローカル時間)を取得する
my $date_str = localtime;

 時刻の文字列表現を取得するにはlocaltime関数の戻り値をスカラーコンテキストで評価します。

localtime関数のデフォルトの引数

 localtime関数に引数を与えないとtime関数の値(エポックからの経過秒数)が使用されます。エポックからの秒数を引数を明示的に与えることもできます。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証