私は最近how to change the timezone returned by localtime
in Perlを学びました。Perlスクリプトはいつ `localtime`を呼び出す前に` tzset`を呼び出す必要がありますか?
use POSIX qw(tzset);
print localtime . "\n";
$ENV{TZ} = 'America/Los_Angeles';
print localtime . "\n";
tzset;
print localtime . "\n";
出力
Wed Apr 15 15:58:10 2009
Wed Apr 15 15:58:10 2009
Wed Apr 15 12:58:10 2009
時間だけtzset
を呼び出した後にどのように変化するかに注意してください。
This is perl, v5.8.8 built for x86_64-linux-thread-multi
しかし、私のシステムでは、私は、私のシステムで、時間がtzset
を呼び出すずにがどのように変化するかを
Fri Jul 8 19:00:51 2016
Fri Jul 8 16:00:51 2016
Fri Jul 8 16:00:51 2016
お知らせを取得しています。これは、すべて私のテストはtzset
は影響を与えないことを示しているのであれば、他のなぜ/どのようなシステムを明示的に呼び出されるtzset
を必要と
のSolaris 10上でUbuntuとIllumosでのPerlの最近のバージョンにも当てはまるだけでなく、Perlのv5.8.8
?特定の環境との互換性を保つためにはまだtzset
に電話する必要がありますか、それとも過去のことですか?
http://perldoc.perl.org/perlport.html#Time-and-Date tl; dr - 時刻と暦日のシステムの概念は、幅広く異なる方法で制御されています。タイムゾーンが$ ENV {TZ}に格納されていると仮定しないでください。タイムゾーンが$ ENV {TZ}に格納されていると仮定しないでください。 – xxfelixxx
私は何か具体的にしたいと思います。私のテストは 'tzset'を呼び出さないことが安全であることを示しています。ここのソフトウェアは特定のプラットフォーム向けのものなので、私のチームには不要な余分な作業をするように伝えたくありません。だから、どんな条件で 'tzset'が必要なのでしょうか? –
回答が投稿されて削除されましたが、http://pubs.opengroup.org/onlinepubs/9699919799/functions/localtime.htmlにリンクしています。*「localtime()がtzset()を呼び出したようにローカルタイムゾーン情報が使用されます。 "*、システムがPOSIXに準拠している場合、' localtime'は 'tzset'を自動的に呼び出さなければなりませんか?これは、OSがPOSIXに準拠しているかどうかを決定する要因ですか? –