こんばんわ。delphi初心者ですよろしくおねがいします。時刻の演算の仕方について質問なのですが、現在の時間を求めるのはnow関数で求めてFormatDateTime 関数でフォーマットすると、19:20:50というような文字型で表示することができました。例えば19:20:50という値をから18:50:20という値引き算したいのですがどのようにしたら良いのでしょうか? 何か意見がありましたらよろしくお願いいたします。多分FormatDateTime 関数でフォーマットした19:20:50という表示を数字に変換すれば良いと思うのですが・・・わかりませんでいた。ネットで根気よく調べてみたのですが、わかりませんでした。よろしくおねがいいたします。
ネットもいいですが、ヘルプファイルも見てみましょう。
now関数、FormaDateTime関数あたりを手がかりに
関連する別な関数が見つかります。
返答ありがとうございます。私のdelphi6なのですが、ヘルプインストールされていません。CD-ROMも紛失してしましました。now関数、FormaDateTime関数での演算方法ありましたら、よろしくおねがいいたします。
CD-ROM紛失?
Personal版なのでしょうか?
ヘルプがないのは今後非常に困ることになるでしょうから、
http://www.borland.co.jp/download/delphi.html
でヘルプを入手してインストールされることをお勧めします。
例えば
var
ATime: TDateTime; // TDateTimeはdouble型
BTime: TDateTime;
Delta: TDateTime;
begin
ATime := Now;
BTime := StrToTime('18:50:20');
Delta := ATime-BTime;
Label1.Caption := '経過時間:'+FormatDateTime('hh:nn:ss',Delta);
end;
ご丁寧な返答ありがとうございます。CD-ROMを紛失してしまいました。ヘルプのダウンロード先まで教えていただきありがとうございます。本当に助かります。今からヘルプをダウンロードして時刻の計算のプログラムを作成しようと思います。
Delta := ATime-BTime;
の部分は、注意が必要です。
例えば、
dt1 := StrToDateTime('1899/12/30 3:00:00');
dt2 := StrToDateTime('1899/12/29 21:00:00');
dt3 := dt1 - dt2;
だと、
dt1 = 0.125;
dt2 = -1.875;
dt3 = 0.125 - (-1.875) = 2;
となり、
結果、1900/1/1になります。
通りすがりですさん 本当にありがとうございました計算できました。大変丁寧な返答感謝しています。また機会がありましたらよろしくおねがいいたします。
解決済のようですが、
にしのさんの指摘されている部分は以外な落とし穴で、重要な部分です。
ヘルプの「TDateTime」をよーく理解してください。
にしのさんに感謝いたします。では
にしのさん返答遅れてもうしわけありませんです。時間については注意しなければならないことがたくさんあるので、気をつけてゆきます。大変丁寧な返答ありがとうございます。勉強になりました。
ツイート | ![]() |