• 締切済み

時間の計算について

PERLにて、以下のようなことがしたいと考えています。 $date1="12:00" $date2="12:45" $date2 - $date1 = 45(分) 上記の感じで2つの時刻の差分時間を計算したいと考えているのでが、何か良い方法はないでしょうか? 最初は時刻を「(時間×60)+○○分」に変換して引き算すれば良いかと考えていましたが、その場合だと、日をまたぐ(23:00から2:00)みたいな計算が出来るのかな?と思いました。 何か良い方法があればご教授頂ければ幸いです。 それでは、どうぞよろしくお願い致します。

  • Perl
  • 回答数3
  • ありがとう数3

みんなの回答

回答No.3

No.2で貼り付けに失敗して2行切れましたが、定義したtimeDiff()は、こんな感じで使います。 ---- printf "$a to $b is %d[min]\n", timeDiff($a,$b); printf "$c to $d is %d[min]\n", timeDiff($c,$d); ---- 出力は、こうなります。 ---- 12:00 to 12:45 is 45[min] 23:00 to 02:00 is 180[min] ----

回答No.2

こんなんでどうでしょう? sub toLinear { my ($timeStr) = @_; my ($hh,$mm) = split(/:/,$timeStr); return ($hh * 60 + $mm); } sub timeDiff { my ($from,$to) = @_; my $MinDays = 24 * 60; return ((toLinear($to) - toLinear($from) + $MinDays) % $MinDays); } $a = "12:00"; $b = "12:45"; $c = "23:00"; $d = "02:00";

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

sub timeDiffByM($$){ # timeformat "hh:mm" # timeDiffByM(from, to) my ($from, $to) = @_; my ($f_h, $f_m) = split(/:/, $from); my ($t_h, $t_m) = split(/:/, $to); my $f = $f_h * 60 + $f_m; my $t = $t_h * 60 + $t_m; my $d = $t - $f; if($d<0){ $d += 24*60; } return $d; } print timeDiffByM("12:00", "12:45") . "(分)\n"; print timeDiffByM("23:00", "02:00") . "(分)\n";

関連するQ&A

  • エクセルでの時間計算と、時間×金額の掛け算について

    エクセル2003で月間の時間集計表を作っています。 例えば、ある一日について8:00に始まり11:45に終わる場合、引き算を設定して、3:45となります。 3時45分ではなく、3時間45分という意味です。 (1)  これらをΣの関数で、合計しましたが、合計で85時間のはずが13:00と表示されます。 たぶん、24時間を3回周って、残りの13時間が表示されたのだと思います。 どうすれば、答えが85:00と表示されるでしょうか? (2)  また、時給計算のような感じで、時間×金額の計算を設定したいのですが、 例えば、、時間のセルが3:45で、金額のセルが1000円で、この2つの掛算の答えを3450円にさせるには、どのようにすればよいでしょうか? そのままやると、答えが6:00になってしまい、1000のセルを通貨の\に指定しても同じ答えになってしまいます。 時間を時刻のような○○:○○で表現するのには無理があるのでしょうか。他の表示方法例えば、 マラソンの記録のような○○°○○′というものも試してみました。 ○○:○○の時刻表記から、どこかの段階で○○°○○′の時間表記に変換する必要があるのかもしれません。 最初から08°00′のセルと 11°45′のセルの引き算を設定すると、答えはエラーになってしまいます。 それらも含めて、アドバイスお願いいたします。

  • 時間を計算する方法

    ログなどに実行した時間と終了した時間が表示される のですが、実行にかかった時間を計算したいと考えております。 例: 10:22:01.012,10:23:10.234 ^^^^^^^^^^^^ ^^^^^^^^^^^^ ↑実行時間  ↑終了時間 上記のようなログが表示される場合で、実行にかかった 時間を計算する方法はないでしょうか? ずっと考えていたのですが、良い方法が思いつきません。perlとかでは出来そうですが、solarisで行いたいと考えています。 ご教授頂ければ幸いです。よろしくお願いします。

  • エクセルの時間計算でコロン(:)を省略した定義を設定し、時間差分の計算

    エクセルの時間計算でコロン(:)を省略した定義を設定し、時間差分の計算をする方法を教えて下さい。 例えば・・・ 入力文字200→(2:00)となる様に設定して さらに以下の様に時間差分の計算をする方法です。 17:00-16:15=0:45となる様に計算したいです。 コロン省略設定をしなければ簡単なのですが・・・・設定すると差分の計算がおかしくなります。

  • Excelでの、時間の計算について

    Excelでの、時間の計算について教えてください。 (1)「25:00→1:00」、「1:00→25:00」に変換する方法 (2)「就寝時刻23:30、起床時刻7:00」の場合の睡眠時間の計算の仕方 (3)「就寝時刻25:30、起床時刻7:00」の場合の睡眠時間の計算の仕方

  • 記録されている時間から何日経ったか表示したい

    CGI(perl)勉強中です。 2012年12月18日22時15分 のように文字列で記録されている時間があります。 (事情によりこの時刻は上記のような文字列型式でしか記録できません) この時間が、現在時刻と比較し、何日経過しているかを表示させたいと思っています。 time 関数を使えば現在時刻の取得が可能ということは分かりました。 この現在時刻から上記の日時をマイナスすれば経過秒数が分かり、 これを日数に計算しなおせばできると思うのですが、 2012年12月18日22時15分をtime関数で取得した現在時刻と同じ型式に 変換させる方法が分かりません。 また、他によい計算方法があればよろしくお願いします。

    • ベストアンサー
    • Perl
  • 時刻データ (0:30) を計算できる数値 (0.5) に変換する方法

    時刻データ (0:30) を計算できる数値 (0.5) に変換する方法 Google ドキュメントのスプレッドシートにて「時刻データ (0:30) を、計算できる数値 (0.5) に変換する方法」をご教授ください。 エクセルですと、以下のような式を設定することで上記の希望を満たす結果を得ることができるのですが、 「=B2/"1:0:0"」 「=(DAY(A1)*24+HOUR(A1))+(MINUTE(A1)/60) 」 式を設定したエクセルファイルをGoogleドキュメントにアップロードすると正しく表示されません。 (72時間30分=72.5時間 が 48.5 と表示される) よろしくお願いします。

  • VB2010で、時刻と時間の計算について

    時刻と時間の計算で、どうするのが最適か教えて下さい。 1…2つの時刻、例えば「08時28分」から「17時04分」までの時間を計算し、Labelにその時間「8時間36分」と表示する 2…3つの時間、例えば「8時間36分」、「6時間08分」、「9時間54分」の合計を計算し、Labelにその合計を表示する 3…上記2番目の平均を計算し、Labelにその平均を表示する よろしくお願いします。

  • エクセルで所要時間を計算する関数はありますか?

    エクセルであるイベントの時間経過表を作っているのですが、A時刻からB時刻までの所要時間を計算し、表に書き入れるというような関数はありますか。時刻は60進法と12進法の組み合わせなので、単純に引き算をすることができなくて困っております。

  • エクセルでの時間計算(2時間30分→2.5と表示するには?)

    開始時刻15:00、終了時刻17:30の場合の所要時間の計算ですが、15分=0.25で表示したいのです。この計算式を教えて下さい。 また、15分=0.25の場合、10分はいくつになるのですか?この計算方法も教えて下さい。 おバカでお恥ずかしいのですが、宜しくお願いします。

  • エクセル 60進法 時間 計算

    エクセルでの勤務時間の計算方法なのですが、 例えば、出勤 23時00分  退勤  7時00分     出勤 7時00分   退勤  15時00分 の勤務時間をエクセルで足し算、引き算、合計計算の方法を教えてもらえませんか? 合計計算のように別々の複数の合計計算を出来るようには出来ないのでしょうか? 宜しくお願いします>

専門家に質問してみよう