C++Builder XE3で様々な日時型を変換する

TDateTime値は次の型と相互に変換することができます。

  • Unix/Linux日付時刻値
  • OSの日付時刻値
  • Win32APIシステムの時型
  • TTimeStamp値
  • インターネットタイムスタンプ
  • ユリウス日
  • 修正ユリウス日

Unix/Linux日付時刻値

サンプルコード

#include <System.DateUtils.hpp>

__int64 unixTime = DateTimeToUnix(TDateTime(2012, 10, 16, 13, 21, 50, 0));
//=> 1350393710

TDateTime dt = UnixToDateTime(unixTime);
//=> 2012/10/16 13:21:50
  • Unix/Linux日付時刻値 → TDateTime値

    IdGlobalProtocols.UnixDateTimeToDelphiDateTime

  • TDateTime値 → UNIX/Linux日付時刻値

    IdGlobalProtocols.DateTimeToUnix

サンプルコード

#include <IdGlobalProtocols.hpp>

LongWord unixTime = DateTimeToUnix(TDateTime(2012, 10, 16, 13, 21, 50, 0));
//=> 1350393710

TDateTime dt = UnixDateTimeToDelphiDateTime(unixTime);
 //=> 2012/10/16 13:21:50

OSの日付時刻値

サンプルコード(SysUtils)

int fileDate = DateTimeToFileDate(TDateTime(2012, 10, 16, 13, 21, 50, 0));
//=> 1095789241

TDateTime dt = FileDateToDateTime(fileDate);
//=> 2012/10/16 13:21:50

サンプルコード(TDateTime)

int fileDate = TDateTime(2012, 10, 16, 13, 21, 50, 0).FileDate();
//=> 1095789241

TDateTime dt = TDateTime::FileDateToDateTime(fileDate);
//=> 2012/10/16 13:21:50

Win32APIシステムの時型

サンプルコード

_SYSTEMTIME systime;
DateTimeToSystemTime(TDateTime(2012, 10, 16, 13, 21, 50, 0), systime);
UnicodeString s = Format("%u/%u/%u %u:%u:%u:%u",
    ARRAYOFCONST((systime.wYear, systime.wMonth, systime.wDay, systime.wHour,
    systime.wMinute, systime.wSecond, systime.wMilliseconds)));
//=> 2012/10/16 13:21:50:0

TDateTime dt = SystemTimeToDateTime(systime);
//=> 2012/10/16 13:21:50

TTimeStamp値

サンプルコード

#include <IdGlobalProtocols.hpp>

TDateTime dt = StrInternetToDateTime("Sat, 20 Sep 2003 11:44:35 +0900");
//=> 2003/09/20 11:44:35

TDateTime dt = GMTToLocalDateTime("Sat, 20 Sep 2003 11:44:35 +0900");
//=> 2003/09/20 11:44:35

ユリウス日

サンプルコード

#include <System.DateUtils.hpp>

double julian = DateTimeToJulianDate(TDateTime(2012, 10, 16, 13, 21, 50, 0));
//=> 2456217.0568287

TDateTime dt = JulianDateToDateTime(julian);
//=> 2012/10/16 13:21:50

修正ユリウス日

サンプルコード

#include <System.DateUtils.hpp>

double julian = DateTimeToModifiedJulianDate(TDateTime(2012, 10, 16, 13, 21, 50, 0));
//=> 56216.5568287037

TDateTime dt = ModifiedJulianDateToDateTime(julian);
//=> 2012/10/16 13:21:50

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です