[Perl]localtimeで日本時間にならない場合の対処

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0 2009 年 5 月 28 日 by: baron

Perlのlocaltime関数を使って、以下のようなコードで日本時間を出力しようとしても、何らかの原因(海外から取り寄せたサーバでタイムゾーンが違うとか)で正しく出力されない場合がある。

▼環境によってはうまく動かないコード

PERL:
  1. my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time + 32400);

この場合、gmtime関数を使えば、必ずグリニッジ標準時を返すので以下のコードで環境に依存せずに日本時間が出力可能になる。

▼環境に依存しないコード

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

▼動作確認用コード

PERL:
  1. use strict;
  2. use warnings;
  3. use Perl6::Say;
  4.  
  5. say gmtime;
  6. say gmtime time + 32400;
  7. say localtime;

Filed under: Perl,プログラム
タグ: ,

Leave a Reply

アナログ