ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

エポック秒を日付に変換する 

更新 : 2010/06/11

 


解説:
UNIX や Windows では、タイムスタンプを処理するのに、UNIX Time の基準時刻 (1970/01/01(木) 00:00:00 UTC)を起算点として通算の秒数で管理しています(日本時間では同日9時0分0秒)。この秒数で表した数値がエポック秒です。
レジストリに記録された、Windows のインストール日時などもエポック秒で記述されています。

エポック秒をこのまま使ってもよいのですが、ユーザーに示す場合、分かりずらいです。そこで、ユーザーに理解してもらいやすい、TDateTime 型の日付に変換してみます。

使用例:
アプリケーション起動後、Edit1 に任意のエポック秒を入力(例では "1222159562")して Button1 をクリックしてください。TDateTime に変換された文字列("2008/09/23")が Edit2 に表示されます。

準備として、Button ひとつと Edit 二つを適当に配置してください。
Edit1 の Text プロパティには "1222159562" を設定しておきます。

Button1 の OnClick イベントハンドラで、 エポック秒を日時に変換しています。
TDateTime は、基準値 "1970/1/1" から指定日までの秒数を JST の時差 9 時間と 1 日の秒数から算出しています。

ここでは日付を求めていますが、余裕のある方は時間も算出してみるといいでしょう。

//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // 適当なエポック秒
    int value = StrToInt(Edit1->Text);
    
    // 日付
    TDateTime date = EncodeDate(1970, 1, 1) + (value + 32400) / 86400;
    Edit2->Text = DateToStr(date);
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.