時刻の差
公開日:
:
最終更新日:2014/01/30
未分類
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
はてなでこんな質問をしてみた。
http://q.hatena.ne.jp/1181206676
$start = “15:16:52”;
$end = “15:29:15”;
この2つの時刻の差を “hh:mm:ss” 形式で
$diff に代入する Perl のスクリプトを提示してください。
んで、返ってきたのが以下の回答。
$start = "15:16:52";
$end = "15:29:15";
@a = split(/:/,$start);
$startsec = @a[0]*3600 + @a[1]*60 + @a[2];
@a = split(/:/,$end);
$endsec = @a[0]*3600 + @a[1]*60 + @a[2];
$diffsec = $endsec - $startsec;
@b[0] = int($diffsec / 3600);
@b[1] = int(( $diffsec % 3600 ) / 60);
@b[2] = ($diffsec % 3600 ) % 60;
$diff = sprintf("%02d:%02d:%02d",@b);
なるほど。
Perlにはsplitがあったのを忘れていた。
正規表現を使って数値を抜き出していました。
split使った方が楽でいいですね。
※追記
$startsec = @a[0]*3600 + @a[1]*60 + @a[2];
で警告が出た。
$startsec = $a[0]*3600 + $a[1]*60 + $a[2];
こうするのが正しいのかな。
関連記事
- PREV
- 今日のPerl
- NEXT
- テストデータの抽出用に書いたスクリプト