'yyyy/mm/dd 24H:MI:SS'形式の日付+時間データをepoc秒に直す方法を探ってます。(最終的に二つの日付+時間の秒差を求めたい)
1970より前のデータは無しと仮定します。
良い日付&時間操作モジュールなどはあるでしょうか?
パースだけなら、Date-Parse がいいとおもう。
Date::Parse - Parse date strings into time values - search.cpan.org
そのほかの日時関連の操作については、Date-Time 及びその派生モジュールが便利です。
http://search.cpan.org/~stbey/Date-Calc-5.4/Calc.pod
このDate-Calcモジュールを使うのが良いかと思います。
差分であれば、Delta_Days辺りを使用すればよいと思います。
非常に便利なモジュールですね
今回は使いませんが、使う機会がありそうなので感謝いたします。
パースだけなら、Date-Parse がいいとおもう。
Date::Parse - Parse date strings into time values - search.cpan.org
そのほかの日時関連の操作については、Date-Time 及びその派生モジュールが便利です。
ほぼそのまま突っ込めるのが素晴らしいです。
my $date_time ='yyyy/mm/dd 24H:MI:SS';
$date_time =~ s{/}{-}g;
my $epoc = str2time($date_time);
今回はDate::Parseモジュールを使わせていただきます。
有難う御座いました。
凝ったことをしないのであれば標準モジュールの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
を使ってる様子。
追加モジュールをインストールできない環境では重宝しそうです。
感謝!!
ほぼそのまま突っ込めるのが素晴らしいです。
my $date_time ='yyyy/mm/dd 24H:MI:SS';
$date_time =~ s{/}{-}g;
my $epoc = str2time($date_time);
今回はDate::Parseモジュールを使わせていただきます。
有難う御座いました。