Delphi XE Pro - UnixTime を計算して経過時間を表示
Delphi XE Pro - Unixtime を 年月日 時分秒に変換

uses に DateUtils が必須です。
procedure TForm1.UnixtimeButton2Click(Sender: TObject);
var
UnixtimeStamp, StartTime, ElapsedTime : UInt64;

day, Hour, Minute, Second: Integer;
AdayOver : Integer; // 24 時間以上用

daystr : string;
TimeString : string;
begin
UnixtimeStamp := 1372995141;
TimeString := FormatDateTime('yyyy/mm/dd hh:mm:ss',UnixToDateTime(UnixtimeStamp));

ShowMessage(TimeString);


// 放送開始からの経過時間
StartTime := 1372485140;

ElapsedTime := UnixtimeStamp - StartTime; // 経過時間(秒数で格納)
ShowMessage(IntToStr(ElapsedTime) + '秒');

Hour := ElapsedTime div 60 div 60 ;

if Hour > 24 then
begin
day := Hour div 24;
AdayOver := Hour mod 24;
daystr := IntToStr(day) + '日目 ' + Format('%.2d',[AdayOver])+ '時間';
end
else
begin
daystr := IntToStr(Hour)+ '時間';
end;

Minute := ElapsedTime div 60 - Hour * 60 ;

Second := ElapsedTime - (Hour * 60 * 60 + Minute * 60) ;

TimeString := daystr + Format('%.2d',[Minute]) + '分' + Format('%.2d',[Second] ) + '秒';

ShowMessage(TimeString);

user_id_Memo.Text := TimeString;
end;


510001秒 が 
5日目 21時間40分01秒
と表示されます。
[PR]

by arigayas | 2013-06-30 00:29 | Delphi Programming | Trackback | Comments(5)
トラックバックURL : http://arigayas.exblog.jp/tb/20659484
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
Commented by au at 2013-07-02 11:42 x
TTimeSpanを使うとすっきりするかも?

DateUtils, TimeSpanをUsesに追加。

procedure TForm1.Button1Click(Sender: TObject);
var
dtStart, dtEnd: TDateTime;
TS: TTimeSpan;
begin
dtEnd := UnixToDateTime(1372995141);
dtStart := UnixToDateTime(1372485140);
TS := TTimeSpan.Subtract(dtEnd, dtStart);

ShowMessage(Format('%d日 %d時間 %d分 %d秒', [TS.Days, TS.Hours, TS.Minutes, TS.Seconds]));
end;
Commented by arigayas at 2013-07-03 06:10
au さんコメントありがとうございます。
この方法でスッキリ出来たんですが、できれば時分秒は2桁表記にしたいんですが、
何か良い方法はありますでしょうか?
Commented by arigayas at 2013-07-03 06:37
とりあえずこうしました。
TimeString := FormatFloat('0', ElapsedTime.Days) + 'days ' +
FormatFloat('00', ElapsedTime.Hours) + ':' +
FormatFloat('00', ElapsedTime.Minutes) + ':' +
FormatFloat('00', ElapsedTime.Seconds)
Commented by au at 2013-07-03 06:54 x
ShowMessage(Format('%d日 %d時間 %d分 %d秒', [TS.Days, TS.Hours, TS.Minutes, TS.Seconds]));

ShowMessage(Format('%d日 %.2d時間 %.2d分 %.2d秒', [TS.Days, TS.Hours, TS.Minutes, TS.Seconds]));
で良いかと。詳細はFormatのヘルプを確認して下さい。
Commented by arigayas at 2013-07-03 16:24
auさん
ありがとうございます!!
Format のヘルプを見てもよくわからなかったんで助かりました!!
<< Delphi XE Pro -... Delphi XE Pro -... >>