System.TDateTime
Delphi
TDateTime = type Double;
C++
class RTL_DELPHIRETURN TDateTime : public TDateTimeBase
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
type class |
public | System.pas systdate.h |
System | System |
説明
TDateTime は、Delphi の TDateTime 型に相当する C++ の型です。
TDateTime は、Delphi の TDateTime データ型と、TDateTime データ型を使用する日付/時刻関連のランタイム ライブラリ ルーチンを実装したものです。
TDateTime クラスは、日時値を保有する val データ メンバ(double 値として宣言される)を継承します。TDateTime 値の整数部分は、1899年12月30日からの経過日数です。TDateTime 値の小数部分は、その日の時刻です。TDateTime 値でサポートされている正しい日時の上限は 12/31/9999 23:59:59:999 です。 値がこの日時を上回ると必ず、TDateTime 値を操作する大半のルーチンでエラーや例外が発生します。
TDateTime は、負の値もサポートしています。TDateTime の負の値を使用する際には、注意が必要です。負の値を誤って使用すると、さまざまな問題を引き起こすおそれがあります。
TDateTime 値とそれに対応する日時の例を以下の表に示します。
値 | 説明 |
0 | 1899 年 12 月 30 日午前 12:00 A.M. |
2.75 | 1900 年 1 月 1 日午後 6:00 P.M. |
-1.25 | 1899 年 12 月 29 日午前 6:00 A.M. |
35065 | 1996 年 1 月 1 日午前 12:00 A.M. |
2 つの日付の間の日数の小数部分を求めるには、TDateTime 値のどちらも負の値でなければ 2 つの値を単に減算します。 同様に、小数で表される日数分だけ日付/時刻値を増やすには、TDateTime 値が正であれば、その小数を日付/時刻値に加算します。
DateUtils ユニットには複数の API(DaysBetween、HoursBetween、WeeksBetween、など)があり、2 つの TDateTime の間の時間を計算するにはより適しています。これらの API は、基とする double の正負にかかわらず機能します。
負の TDateTime 値を扱う場合は、時刻部分を別個に処理する必要があります。 小数部分は、TDateTime 値の符号とは無関係に 1 日 24 時間の一部分を表します。 たとえば、1899 年 12 月 29 日の午前 6:00 は -1 + 0.25(-0.75)ではなく -1.25 です。 -1.0 より大きく 0.0 までの日付は、1.0 より小さく 0.0 までの日付と、お互い鏡対称となります。これは、+ve zero と -ve zero が等しいためです。
以下のストリーム演算子が定義されています。
ostream& operator << (ostream& os, const TDateTime& arg);
istream& operator >> (istream& is, TDateTime& arg);