人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perlの日付扱いに関する質問です。

'yyyy/mm/dd 24H:MI:SS'形式の日付+時間データをepoc秒に直す方法を探ってます。(最終的に二つの日付+時間の秒差を求めたい)
1970より前のデータは無しと仮定します。

良い日付&時間操作モジュールなどはあるでしょうか?

●質問者: Likkradyus
●カテゴリ:インターネット ウェブ制作
✍キーワード:dd Mi MM Perl SS
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● maq
●30ポイント

http://search.cpan.org/~stbey/Date-Calc-5.4/Calc.pod

このDate-Calcモジュールを使うのが良いかと思います。

差分であれば、Delta_Days辺りを使用すればよいと思います。

◎質問者からの返答

非常に便利なモジュールですね

今回は使いませんが、使う機会がありそうなので感謝いたします。


2 ● b-wind
●40ポイント ベストアンサー

パースだけなら、Date-Parse がいいとおもう。

Date::Parse - Parse date strings into time values - search.cpan.org


そのほかの日時関連の操作については、Date-Time 及びその派生モジュールが便利です。

DateTime - A date and time object - search.cpan.org

◎質問者からの返答

ほぼそのまま突っ込めるのが素晴らしいです。

my $date_time ='yyyy/mm/dd 24H:MI:SS';

$date_time =~ s{/}{-}g;

my $epoc = str2time($date_time);

今回はDate::Parseモジュールを使わせていただきます。

有難う御座いました。


3 ● MAS3
●30ポイント

凝ったことをしないのであれば標準モジュールのTime::Localでもできます。

http://perldoc.perl.org/Time/Local.html

use strict;
use Time::Local;

my ($year, $month, $day, $hour, $min, $sec)
 = ('2007/06/22 23:01:02' =~ m|(\d{4})/(\d{2})/(\d{2})\s(\d{2}):(\d{2}):(\d{2})|);
my $time = timelocal($sec, $min, $hour, $day, $month - 1, $year - 1900), "\n";
print $time, "\n";
◎質問者からの返答

標準モジュールであったんですね。

localtime関数のほぼ真逆?

$month - 1, $year - 1900

を忘れそうなので注意します。

Date::Parseも中ではTime::Local

を使ってる様子。

追加モジュールをインストールできない環境では重宝しそうです。

感謝!!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ