2009-03-02 8 views
7

Perlでは、localtimeはUNIXのタイムスタンプをとり、年/月/日/時/分/秒などを返します。localtimeの反対側を探しています:私は部品を持っています。それらからのタイムスタンプ。いくつかの使用ののCPANのかもしれないのPerlのlocaltime関数の逆は何ですか?

答えて

7

DateTime。また、ロットの時間操作/翻訳方法もあります。

部品を使用してDateTimeを作成し、$ datetime->フォーマッタ( "%s")を呼び出してください。

+0

はい。不確かな場合は、DateTimeを使用してください - One True Perl時間システム。時間のかかるツールの間を行き来することは難しいです。 – Anirvan

14

Time::Local CPANモジュールでは、timelocal関数を使用できます。

NAME

時間::ローカル - 効率的

SYNOPSIS

$time = timelocal($sec,$min,$hour,$mday,$mon,$year); 
$time = timegm($sec,$min,$hour,$mday,$mon,$year); 

説明

このモジュールは がある機能を提供し、ローカルおよびGMT時刻から を計算組み込みPerlの逆数 は、localtime()およびgmtime()を機能させます。 彼らは日付を6つの要素の 配列として受け入れ、 システムエポック(例えば、Midnight、January 1、 1970年GMT、Unixなど)から、対応する のtime(2)値を秒単位で返します。 POSIXは の正の値のサポートのみが必要ですが、 の値は正または負になりますが、 システムのエポックの前の日付はすべての オペレーティングシステムでは機能しない可能性があります。

具体的には の値の範囲に注意してください。 日の値は実際の日(つまり 1.31)ですが、1月は1月(0.11)からの月数です。この は、localtime()およびgmtime()から返された値 と一致しています。

注:​​は、あなたのCライブラリのmktime()機能単なるラッパーです。 Time :: Localは純粋なPerl実装であり、常にPerlのlocaltimeに一致する結果を返します。また、Time :: Localはgmtimeを提供し、mktimeは現地時間でのみ動作します。 (まあ、$ENV{TZ}を変更してみることもできますが、一部のシステムでは動作しません)

+0

私はTime :: LocalとPOSIX :: mktimeの間にどのような違いがあるのか​​分かりませんが、Time :: Localを常に使用していて問題はありませんでした。 –

+1

注:PerlのlocaltimeはCライブラリのlocaltimeまたはlocaltime_r関数のラッパーです。常にCのmktimeに一致する結果を返します。 :) – ysth

+1

Cライブラリのバージョンがなくても、Perlのローカルのy2038を安全にするパッチがあります。私はそれがまだデフォルトで統合されているとは思わないが、おそらくそうなるだろう。 Time :: Localは修正されていますが、POSIX :: mktimeにパッチが当てられていないと思います。 – cjm

関連する問題