日付時間型から経過時間を簡単に求める関数は?


山中  2013-09-11 01:16:39  No: 45228

お世話になっています。現在スケジュール管理のプログラムをDelphi7、WindowsXpで作っています。日付時間型から経過時間を求める簡単な関数がわかりましたら具体的な使用例でお教え下さい。色々なサイトを調べたのですが
数が多く難しくてよくわかりません、初心者ですので簡単に教えて下さい。宜しくお願いします。

var
  lft  :Tdatetime;
  ltt  :Tdatetime;
  lday :Tdatetime;
begin
  lft   :=StrToDatetime('2013/09/10 00:00:00');
  ltt   :=StrToDatetime('2013/09/10 12:00:00');
   lday :=ltt -lft;
   showmessage(CurrToStr(lday));
end;

これで経過日数は算出出来るのですが経過時間の算出がわかりません、結果を12.000と出したいのですが・・・。


RAD命  2013-09-11 01:34:24  No: 45229

純粋に、TimeToStrで時間型からString型に変換してみたら、
12:00になりました。

参考になれば幸いです。

procedure TForm1.Button1Click(Sender: TObject);
var
  lft  :Tdatetime;
  ltt  :Tdatetime;
  lday :Tdatetime;
begin
  lft   :=StrToDatetime('2013/09/10 00:00:00');
  ltt   :=StrToDatetime('2013/09/10 12:00:00');
   lday :=ltt -lft;
   showmessage(timetostr(lday));
end;


山中  2013-09-11 01:58:04  No: 45230

出来ました、RAD命さんアリガトウございます!


RAD命  2013-09-11 02:23:49  No: 45231

質問の意味を間違えていたみたいなので、
書き直しました、すいません。

こういう事でしょうか?

もしかすると、時間単位の計算間違っているかもしれません・・・。

procedure TForm1.Button1Click(Sender: TObject);
var
  lft  :Tdatetime;
  ltt  :Tdatetime;
  lday :Tdatetime;
  time:string;
  T:integer;
  sc:integer;
  ms:integer;
begin
  lft   :=StrToDatetime('2013/09/10 00:00:00');
  ltt   :=StrToDatetime('2013/09/10 12:34:22');
   lday :=ltt -lft;
   time := timetostr(lday);
   T := (strtoint(time[1] + time[2]) * 60);
   sc := (strtoint(time[4] + time[5]) * 60) div 10;
   ms := (strtoint(time[7] + time[8]) * 60) div 100;

   showmessage(inttostr((T * 60 )+ (sc * 60 ) + (ms * 60)) + '秒');
   showmessage(inttostr((T + sc + ms )) + '分');
   showmessage(inttostr(( T div 60 )+ ( sc div 600 ) + (ms div 6000) ) + '時間');
   showmessage(time[1] + time[2] + '.' +  inttostr(( sc div 600 ) + (ms div 6000)));
   showmessage(time[1] + time[2] + '.' + time[4] + time[5]+'.' + time[7] + time[8]);

end;


RAD命  2013-09-11 02:27:54  No: 45232

あれ、最初ので解決したみたいで・・・。
後に書いたコードも参考にして貰えれば幸いです^^。


Mr.XRAY  2013-09-12 23:26:08  No: 45233

TimeStamp 関数を使用する方法もありますね.参考までに.
「簡単」ではないとは思いますが.

[06_日付時刻型プロパティの処理例  -  ミリ秒まで取得]
http://mrxray.on.coocan.jp/Delphi/plSamples/898_WMI_Introduction.htm#list9


サトウ  2013-09-22 10:04:40  No: 45234

最初に経過日数のことが書いてあるので問題ないと思うが、経過日数を考慮しないなら(24時間以上は、表示しないと言う前提で)

  lft   :=StrToDatetime('2013/09/10 12:00:00');
  ltt   :=StrToDatetime('2014/09/10 12:34:22');
  lday :=ltt -lft;
  showmessage(FormatDatetime('hh:nn:ss',lday);

でもいいのでは?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加