MGL::System::DateTime
Contents
MGL::System::DateTime#
概要#
MGL::System::DateTimeは日付と時刻を表すための構造体です。
この構造体はUNIXエポック時間 (MGL::System::EpochTime) を人間が読みやすい形式に変換する目的で用意されています。主に日付と時刻の表示に使用することを想定しており、内部的な時間の管理にはこの構造体ではなくUNIXエポック時間を使用することを推奨します。
ヒント
日付と時刻で時間を管理する方法は、時差や閏年などが絡み大変煩雑になるため推奨されません。
宣言#
namespace MGL::System
{
struct DateTime;
}
メンバ情報#
種類 |
名前 |
内容 |
バージョン |
---|---|---|---|
関数 |
1.0.0+ |
||
メンバ変数 |
年を表す値 |
1.0.0+ |
|
メンバ変数 |
月を表す値 |
1.0.0+ |
|
メンバ変数 |
日を表す値 |
1.0.0+ |
|
メンバ変数 |
時を表す値 |
1.0.0+ |
|
メンバ変数 |
分を表す値 |
1.0.0+ |
|
メンバ変数 |
秒を表す値 |
1.0.0+ |
|
メンバ変数 |
時差を表す値 |
1.1.12+ |
コンストラクタ#
宣言#
namespace MGL::System
{
struct DateTime
{
// (1) 初期値で初期化
constexpr DateTime() noexcept;
// (2) UNIXエポック時間と時差で初期化
DateTime(EpochTime epochTime, int32_t inTimeDifference = 0) noexcept;
};
}
引数#
- (1) 初期値で初期化
引数なし
- (2) UNIXエポック時間と時差で初期化
- MGL::System::EpochTime epochTime
UNIXエポック時間
- int32_t inTimeDifference
時差
説明#
この構造体のコンストラクタです。
(1) はUNIXエポック時間の基準値である1970年1月1日0時0分0秒で各メンバを初期化します。
(2) はUNIXエポック時間と時差で初期化します。引数epochTime
にはMGL::System::EpochTime型の時間を、inTimeDifference
には時差を秒単位で指定してください。時差の指定は省略可能で、その場合は0
として扱われます。
UNIXエポック時間についてはMGL::System::EpochTimeを参照してください。
利用例#
- 2038年問題が発生する時間を日付と時刻に変換して表示する例
// 2038年問題が発生するUNIXエポック時間 (32ビット符号付き整数がオーバーフローする時間) constexpr const MGL::System::EpochTime y2038ProblemTime = 0x80000000; // UNIXエポック時間でDateTime構造体を初期化 MGL::System::DateTime dateTime(y2038ProblemTime); // 構造体の内容を表示 MGL_TRACE("2038年問題が発生する時間: %d-%02d-%02d %02d:%02d:%02d", dateTime.year, dateTime.month, dateTime.day, dateTime.hour, dateTime.minute, dateTime.second);
- 実行結果
2038年問題が発生する時間: 2038-01-19 03:14:08
注釈
MGLはMGL::System::EpochTimeが64ビット以上である事を必須としているため、2038年問題を起こすことはありません。
関連#
year#
年を表す値
宣言#
namespace MGL::System
{
struct DateTime
{
uint16_t year;
};
}
説明#
日付の年を表す値です。
バージョン情報#
- MGL 1.0.0
初回リリース
month#
月を表す値
宣言#
namespace MGL::System
{
struct DateTime
{
uint8_t month;
};
}
説明#
日付の月を表す値です。この値は通常、1
から12
の間の値で表現されます。
バージョン情報#
- MGL 1.0.0
初回リリース
day#
日を表す値
宣言#
namespace MGL::System
{
struct DateTime
{
uint8_t day;
};
}
説明#
日付の日を表す値です。この値は通常、1
から31
の間の値で表現されます。
バージョン情報#
- MGL 1.0.0
初回リリース
hour#
時を表す値
宣言#
namespace MGL::System
{
struct DateTime
{
uint8_t hour;
};
}
説明#
時刻の時を表す値です。この値は通常、0
から23
の間の値で表現されます。
バージョン情報#
- MGL 1.0.0
初回リリース
minute#
分を表す値
宣言#
namespace MGL::System
{
struct DateTime
{
uint8_t minute;
};
}
説明#
時刻の分を表す値です。この値は通常、0
から59
の間の値で表現されます。
バージョン情報#
- MGL 1.0.0
初回リリース
second#
秒を表す値
宣言#
namespace MGL::System
{
struct DateTime
{
uint8_t second;
};
}
説明#
時刻の秒を表す値です。この値は通常、0
から59
の間の値で表現されます。
バージョン情報#
- MGL 1.0.0
初回リリース
timeDifference#
時差を表す値
宣言#
namespace MGL::System
{
struct DateTime
{
int32_t timeDifference;
};
}
説明#
各々のパラメータに適用済みの時差を表す値です。この値は初期化時に指定された時差を秒単位で表現します。
この値は通常、-43200
(-12時間)から43200
(+12時間)の間で表現されます。
バージョン情報#
- MGL 1.1.12
初回リリース