お世話になっています。現在スケジュール管理のプログラムを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と出したいのですが・・・。
純粋に、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;
出来ました、RAD命さんアリガトウございます!
質問の意味を間違えていたみたいなので、
書き直しました、すいません。
こういう事でしょうか?
もしかすると、時間単位の計算間違っているかもしれません・・・。
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;
あれ、最初ので解決したみたいで・・・。
後に書いたコードも参考にして貰えれば幸いです^^。
TimeStamp 関数を使用する方法もありますね.参考までに.
「簡単」ではないとは思いますが.
[06_日付時刻型プロパティの処理例 - ミリ秒まで取得]
http://mrxray.on.coocan.jp/Delphi/plSamples/898_WMI_Introduction.htm#list9
最初に経過日数のことが書いてあるので問題ないと思うが、経過日数を考慮しないなら(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);
でもいいのでは?
ツイート | ![]() |