[PR]馳凡g\
g選

年月日や曜日・時刻の取得

=Perl, =結果


time関数です 年月日や時間、曜日を扱う関数 time と localtime について説明します。

それでは実際にどのように使用すればいいのでしょうか。
$time = localtime(time);
print $time;

ただ、これでは使いづらいですね。そこで色々な表示ができるようにしましょう。
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$yyyymmddJ = sprintf("%04d年%02d月%02d日", $year + 1900, $mon +1, $mday);
print $yyyymmddJ;
2001年08月08日
このように人間が理解できるようになります。
  • sprintf で文字列変換しています
    【→Perl Reference: sprintf
  • %dは10進数の形式を指します。%04d は4桁、%02dで2桁の10進数を指します。ちなみに%sは文字列形式です。
    2001年8月8日と月日にゼロを表示させないなら
    $yyyymmddJ = sprintf("%04d年%d月%d日", $year + 1900, $mon +1, $mday);
    print $yyyymmddJ;
    で表示できます
  • 年は1900年からの経過年数ですので $year + 1900 としてあります
  • 月は0から11までの値なので $mon +1 とすると正しく表示できます

    $hhmmssJ = sprintf("%02d時%02d分%02d秒", $hour, $min, $sec);
    • これで日本語で時分秒の表示ができます

    $yobiJ = sprintf("%s", ("日", "月", "火", "水", "木", "金", "土")[$wday]);
    • 曜日です
    • %s は文字列の形式です
    • $wday には0から6までの数で曜日を現しています

    #!/usr/local/bin/perl
    
    print "Content-type: text/html\n\n";
    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
    $yyyymmddJ = sprintf("%04d年%02d月%02d日", $year + 1900, $mon +1, $mday);
    $yyyymmddJ2 = sprintf("%d年%d月%d日", $year + 1900, $mon +1, $mday);
    $yyyymmdd = sprintf("%04d.%02d.%02d", $year + 1900, $mon +1, $mday);
    $yyyymmdd2 = sprintf("%d.%d.%d", $year + 1900, $mon +1, $mday);
    $hhmmssJ = sprintf("%02d時%02d分%02d秒", $hour, $min, $sec);
    $hhmmssJ2 = sprintf("%d時%d分%d秒", $hour, $min, $sec);
    $hhmmss = sprintf("%02d:%02d:%02d", $hour, $min, $sec);
    $hhmmss2 = sprintf("%d:%d:%d", $hour, $min, $sec);
    $weekJ = sprintf("%s", ("日", "月", "火", "水", "木", "金", "土")[$wday]);
    $weekE = sprintf("%s", ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")[$wday]);
    $week = sprintf("%s", ("Sun", "Mon", "Tue", "Wed", "The", "Fri", "Sat")[$wday]);
    $localtime = localtime(time);
    
    print "time=", time, "<br>\n";
    print "localtime(time)=", localtime(time), "<br>\n";
    print "\$localtime=$localtime<br>\n";
    print "\$yyyymmddJ=$yyyymmddJ<br>\n";
    print "\$yyyymmddJ2=$yyyymmddJ2<br>\n";
    print "\$yyyymmdd=$yyyymmdd<br>\n";
    print "\$yyyymmdd2=$yyyymmdd2<br>\n";
    print "\$hhmmssJ=$hhmmssJ<br>\n";
    print "\$hhmmssJ2=$hhmmssJ2<br>\n";
    print "\$hhmmss=$hhmmss<br>\n";
    print "\$hhmmss2=$hhmmss2<br>\n";
    print "\$weekJ=$weekJ<br>\n";
    print "\$weekE=$weekE<br>\n";
    print "\$week=$week<br>\n";
    
    exit;
    • time=997330382
      localtime(time)=213139710142200
      $localtime=Thu Aug 9 13:13:02 2001
      $yyyymmddJ=2001年08月09日
      $yyyymmddJ2=2001年8月9日
      $yyyymmdd=2001.08.09
      $yyyymmdd2=2001.8.9
      $hhmmssJ=13時13分02秒
      $hhmmssJ2=13時13分2秒
      $hhmmss=13:13:02
      $hhmmss2=13:13:2
      $weekJ=木
      $weekE=Thursday
      $week=The
      
      上のように色々な使い方ができます。
    • CGIを実行しますl_yymmdd_4.cgi

    下のスクリプトをPerlから require(他のスクリプトから呼び出す) して変数を使えば、そのページにあわせた表現ができます。ファイル名を time.pl としました。他のスクリプトでも時々使用することにします。
    【→Perl Reference: require
      ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
      $yyyymmddJ = sprintf("%04d年%02d月%02d日", $year + 1900, $mon +1, $mday);# 2001年08月09日
      $yyyymmddJ2 = sprintf("%d年%d月%d日", $year + 1900, $mon +1, $mday);# 2001年8月9日
      $yyyymmdd = sprintf("%04d.%02d.%02d", $year + 1900, $mon +1, $mday);# 2001.08.09
      $yyyymmdd2 = sprintf("%d.%d.%d", $year + 1900, $mon +1, $mday);# 2001.08.09
      $hhmmssJ = sprintf("%02d時%02d分%02d秒", $hour, $min, $sec);# 13時13分02秒
      $hhmmssJ2 = sprintf("%d時%d分%d秒", $hour, $min, $sec);# 13時13分2秒
      $hhmmss = sprintf("%02d:%02d:%02d", $hour, $min, $sec);# 13:13:02
      $hhmmss2 = sprintf("%d:%d:%d", $hour, $min, $sec);# 13時13分2秒
      $weekJ = sprintf("%s", ("日", "月", "火", "水", "木", "金", "土")[$wday]);# 木
      $weekE = sprintf("%s", ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")[$wday]);# Thursday
      $week = sprintf("%s", ("Sun", "Mon", "Tue", "Wed", "The", "Fri", "Sat")[$wday]);# The
      

    | Back | Coco's Home | ココとPerlで遊びませんか |

    Copyright 2001-2002 Coco's Home. All rights reserved.