街中で見かけて「グッときた人」の思い出

時間の足し算をしたいです。
同日内での計算はできるのですが、0時をこえたときの
計算ができません。

例)23:30~0:30

どなたか、お願いします。

環境はC++Builder6です。

A 回答 (5件)

質問の趣旨は当日23:30から翌日00:30までの経過時間を求めるということでよろしいのでしょうか?


この場合、日付を示すデータは別に管理されているのでしょうか?
そして、起点時刻は当日、終点時刻は翌日と決め打ちできるのでしょうか?

もし、そうであるなら、

 TTime from("23:30");
 TTime to("00:30");

 to+=1; //日付を1日進める。

 TTime dif = to - from;
 ShowMessage( dif );

これでいけます。
しかし、普通は、日付と時刻と一括してTDateTimeで管理するほうが楽だと思いますが。それならただ単に引算するだけで経過時間が求まります。

TTimeの扱いについてはヘルプでTDateTimeを参照。TTimeは実質TDateTimeと同じオブジェクトです。
同じくヘルプの「VCLリファレンス→日付時刻ルーティン」も役に立ちます。
    • good
    • 0

時間の引き算ですよね?


単純に引き算して、結果<0なら24:00を足す、
ということで解決できるのでは、と思います。

もし一時的に負の値が出るのがまずいようなら、
A~Bの差を取るときA>BならBに24:00を足し、
それから引き算をすればいいと思います。

一時的に24:00を超えるのもまずいようなら、
A>Bのときは24:00-A+Bと計算する、
というのはどうでしょうか。
    • good
    • 0

mktime関数を調べてみてください。

    • good
    • 0

たとえば、0時を25時、24時以降は24時の連続として置き換えて計算する方法がよいと思います。

    • good
    • 0

だし算と言うよりは引き算では?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!