関数順 インデックス
目的別 インデックス

構文
 
 gmtime time関数が返す形式の時刻

返り値
 
 秒や分など9個の時刻情報

説明

  • time関数が返す形式の時刻をグリニッジ標準時の時間に変換します。普通の時間の時刻情報を取得する場合はgmtimeの代わりにlocaltimeを使って下さい。
  • 返す値は秒や分などを表す9個の要素を持つリストです。ただしスカラーコンテキストでは文字列で返します。
  • 変数を省略して単にgmtimeと書くとgmtime(time)が実行され現在の時刻情報を返します。
  • 9個のリストは先頭から順番に以下の値になります。
    • 1. 秒
    • 2. 分
    • 3. 時
    • 4. 日
    • 5. 月(0~11) 1月の場合に0,2月の場合に1,……,12月の場合に11
    • 6. 年(西暦から1900を引いた値) 2008年の場合に108
    • 7. 曜日(0:日,1:月,……,6:土)
    • 8. 年明けからの経過日数(1月1日の時に0)
    • 9. サマータイムが有効の場合正の整数,無効の場合0,不明の場合負の整数

使用例

現在時刻を表示する
#!/usr/bin/perl
use strict;
use warnings;

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
  = gmtime(time);
$year += 1900;
$mon += 1;

print "$year年$mon月$mday日 $hour時$min分$sec秒\n";
現在時刻を表示する(標準時とローカル時刻の両方)
#!/usr/bin/perl
use strict;
use warnings;

my $tim = time;

print "標準時\n";
print_gmtime($tim);

print "\n";
print "ローカル時刻\n";
print_localtime($tim);

sub print_gmtime {
  my $tim = shift;
  
  my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
    = gmtime($tim);
  $year += 1900;
  $mon += 1;
  
  print "$year年$mon月$mday日 $hour時$min分$sec秒\n";
}

sub print_localtime {
  my $tim = shift;
  
  my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
    = localtime($tim);
  $year += 1900;
  $mon += 1;
  
  print "$year年$mon月$mday日 $hour時$min分$sec秒\n";
}
1時間後の時刻を表示する
#!/usr/bin/perl
use strict;
use warnings;

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
  = gmtime(time + 3600);
$year += 1900;
$mon += 1;

print "$year年$mon月$mday日 $hour時$min分$sec秒\n";
※time関数が返す形式の時刻は1秒に1ずつ増えていきますので,例えば1時間後の時刻情報が欲しい場合には3,600を加えます。

現在時刻を表示する(timeを省略)
#!/usr/bin/perl
use strict;
use warnings;

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
  = gmtime;
$year += 1900;
$mon += 1;

printf
  "%04d-%02d-%02d %02d:%02d:%02d\n",
  $year, $mon, $mday, $hour, $min, $sec;
※現在の時刻情報を取得する場合,引数を省略することができます。

時刻情報を配列で受け取り,現在の時間を表示する
#!/usr/bin/perl
use strict;
use warnings;

my @now = gmtime;

print "$now[2]時$now[1]分$now[0]秒\n";
※時刻情報を配列で受けとることもできます。

時刻情報を文字列で受け取り表示する(例:Thu May 22 01:23:45 2008)
#!/usr/bin/perl
use strict;
use warnings;

my $time_str = gmtime(time);
print $time_str, "\n";
※スカラーコンテキストの場合,時刻情報は文字列になります。

現在時刻を表示する(書式指定)
#!/usr/bin/perl
use strict;
use warnings;
use POSIX;

my $now = POSIX::strftime "%Y/%m/%d %H:%M:%S", gmtime(time);
print $now, "\n";
※POSIXモジュールのstrftimeを使うと簡単に日付の書式を指定することができます。