etc.negui.system.time

タイマーというか時間関係。
std.timeがあまりにもあれだったんで置き換え。
class TimeException: etc.negui.system.exception.NeGuiException;

class FileDateTimeException: etc.negui.system.time.TimeException;

struct FILEDATETIME;
History:
1.100: 新規作成。
static SYSTEMDATETIME toSystemDateTime(ref const FILEDATETIME FileDateTime );

const SYSTEMDATETIME toSystemDateTime();

const bool opEquals(ref const FILEDATETIME FileDateTime );

const int opCmp(ref const FILEDATETIME FileDateTime );

class SystemDateTimeException: etc.negui.system.time.TimeException;

struct SYSTEMDATETIME;
History:
1.100: 新規作成。
const FILEDATETIME toFileDateTime(ref const SYSTEMDATETIME SystemDateTime );

const FILEDATETIME toFileDateTime();

static SYSTEMDATETIME localTime();

const bool opEquals(ref const SYSTEMDATETIME SystemDateTime );

const int opCmp(ref const SYSTEMDATETIME SystemDateTime );

const Text toText();

const string toString();
string toString();

enum RANGE;
最小/最大値
MONTH_MIN
MONTH_MAX
DAY_MIN
DAY_MAX
WEEK_MIN
WEEK_MAX
曜日
HOUR_MIN
HOUR_MAX
MINUTE_MIN
MINUTE_MAX
SECOND_MIN
SECOND_MAX
MS_MIN
MS_MAX
ミリ秒
static bool isYear(WORD Year );
年として合法か。
0年ならfalseとする。
static bool isLeapYear(WORD Year );
閏年判定。
In:
isYear(Year )
enum WEEK;
曜日。
SUNDAY
日。
MONDAY
月。
TUESDAY
火。
WEDNESDAY
水。
THURSDAY
木。
FRIDAY
金。
SATURDAY
土。
static WEEK getWeekDay(in WORD Year , in WORD Month , in WORD Day );
曜日の取得。
Returns:
WEEK。
Standards:
Zellerの公式
See Also:
ウィキペディア, http://ja.wikipedia.org/wiki/%E3%83%84%E3%82%A7%E3%83%A9%E3%83%BC%E3%81%AE%E5%85%AC%E5%BC%8F
In:
isYear(Year ) && isMonth(Month ) && isDay(Day )
static WORD getMonthDay(WORD Year , WORD Month );
月の日数。
In:
isYear(Year ) && isMonth(Month )
static WORD nextMonth(WORD NowMonth );
次の月を取得。
Params:
WORD NowMonth
現在の月。
Returns:
来月。
In:
isMonth(NowMonth )
static WORD prevMonth(WORD NowMonth );
前の月を取得。
Params:
WORD NowMonth
現在の月。
Returns:
先月。
In:
isMonth(NowMonth )
static WORD nextDay(WORD Year , WORD Month , WORD Day );
次の日を取得。
Params:
WORD Year
現在の年。
WORD Month
現在の月。
WORD Day
現在の日。
Returns:
次の日。
In:
isYear(Year ) && isMonth(Month ) && isDay(Day )
static WORD prevDay(WORD Year , WORD Month , WORD Day );
前の日を取得。
Params:
WORD Year
現在の年。
WORD Month
現在の月。
WORD Day
現在の日。
Returns:
前の日。
In:
isYear(Year ) && isMonth(Month ) && isDay(Day )
class DateTimeException: etc.negui.system.time.SystemDateTimeException;

class DateTime: etc.negui.system.text.IText;
日時を扱う専用クラス。
ネムぃに特化。
BUGS:
調子乗りすぎた。 もうしんどい、いやや。
History:
1.100: [S] 全面修正。
1.00β19: [S] Timeを継承。
protected const Text FormatSingle(in Text FormatText , in Text TargetToken , int Width , int Value );

protected const Text FormatDate(in Text FormatText , MASK Mask );

protected static Throwable TogetherAssignment(ref SYSTEMDATETIME SystemDateTime );
Note:
取り敢えずべた書き。
protected void Initialize(MODE Mode );

const Text toText();
History:
1.100: [P] maskがMASK.ALLであればSYSTEMDATETIME.toTextと等価。
this(MODE Mode = (MODE).FLEXIBLE);
現在時刻からDateTimeの生成。
Params:
MODE Mode
日時設定時の挙動。
this(MODE Mode , ref const SYSTEMDATETIME SystemDateTime );
指定日時からDateTimeの生成。
Params:
MODE Mode
日時設定時の挙動。
SYSTEMDATETIME SystemDateTime
設定する日時情報。
Throws:
ModeがMODE.STRICTでSystemDateTimeが不正な場合にDateTimeException。
this(MODE Mode , ref const FILEDATETIME FileDateTime );
指定日時からDateTimeの生成。
Params:
MODE Mode
日時設定時の挙動。
FILEDATETIME FileDateTime
設定する日時情報。
Throws:
ModeがMODE.STRICTでFileDateTimeが不正な場合にDateTimeException。
this(MODE Mode , WORD Year , WORD Month = (RANGE).MONTH_MIN, WORD Day = (RANGE).DAY_MIN, WORD Hour = (RANGE).HOUR_MIN, WORD Minute = (RANGE).MINUTE_MIN, WORD Second = (RANGE).SECOND_MIN, WORD Ms = (RANGE).MS_MIN);
指定日時からDateTimeの生成。
Params:
MODE Mode
日時設定時の挙動。
WORD Year
年。
WORD Month
月。
WORD Day
日。
WORD Hour
時。
WORD Minute
分。
WORD Second
秒。
WORD Ms
ミリ秒。
Throws:
ModeがMODE.STRICTで引数が不正な場合にDateTimeException。
this(MODE Mode , in Text Value );
文字列からDateTimeの生成。
Params:
MODE Mode
日時設定時の挙動。
Text Value
日時情報に変換可能な文字列。 YYYY-MM-DDThh:mm:ss.MS形式(0埋め不要)で指定。
年以外は順々に省略可能。
Throws:
Valueを分解できない場合にDateTimeException。 ModeがMODE.STRICTで引数が不正な場合にDateTimeException。
Text format;
日時書式。
変換前 変換後
[Y] 12345 -> 12345, 1234 -> 1234, 123 -> 123, 12 -> 12, 1 -> 1
[YY] 12345 -> 45, 1234 -> 34, 123 -> 23, 12 -> 12, 1 -> 01
[YYYY] 12345 -> 2345, 1234 -> 1234, 123 -> 0123, 12 -> 0012, 1 -> 0001
[@M] DateTime.monthName()
[M] 1 -> 1, 9 -> 9 10 -> 10
[MM] 1 -> 01, 9 -> 09, 10 -> 10
[D] 12345 -> 12345, 1234 -> 1234, 123 -> 123, 12 -> 12, 1 -> 1
[DD] 12345 -> 45, 1234 -> 34, 123 -> 23, 12 -> 12, 1 -> 01
[@W] DateTime.weekName()
[W] 0 -> 0, 3 -> 3, 6 -> 6
[h] 12345 -> 12345, 1234 -> 1234, 123 -> 123, 12 -> 12, 1 -> 1
[hh] 12345 -> 45, 1234 -> 34, 123 -> 23, 12 -> 12, 1 -> 01
[m] 12345 -> 12345, 1234 -> 1234, 123 -> 123, 12 -> 12, 1 -> 1
[mm] 12345 -> 45, 1234 -> 34, 123 -> 23, 12 -> 12, 1 -> 01
[s] 12345 -> 12345, 1234 -> 1234, 123 -> 123, 12 -> 12, 1 -> 1
[ss] 12345 -> 45, 1234 -> 34, 123 -> 23, 12 -> 12, 1 -> 01
[ms] 12345 -> 12345, 1234 -> 1234, 123 -> 123, 12 -> 12, 1 -> 1
[MS] 12345 -> 345, 1234 -> 234, 123 -> 123, 12 -> 012, 1 -> 001
Text[12u] months;
月の文字列。
Text[7u] weeks;
曜日の文字列。
const const(Text) monthName();
日時情報から現在の月名を取得。
const const(Text) weekName();
日時情報から現在の曜日名を取得。
enum MASK;
文字列変換時の変換フラグ。
該当しない箇所は文字列変換されない。
YEAR
年。
MONTH
月。
DAY
日。
WEEK
曜日。
HOUR
時。
MINUTE
分。
SECOND
秒。
MS
ミリ秒。
DATE
年・月・日。
DATES
年・月・日・曜日。
TIME
時・分・秒。
TIMES
時・分・秒・ミリ秒。
ALL
全て。
MASK mask;
変換フラグ。
enum MODE;
日時設定時の動作。
FLEXIBLE
あふれる場合は次に進めたりする。
STRICT
問答無用で例外。
MODE mode;
挙動
protected void ChangeWeek();

const SYSTEMDATETIME.WEEK week();
日時情報から現在の曜日を取得。
struct TIMESTAMP;

enum FLAG;

FLAG flags;

DateTime create;
作成日時。
DateTime access;
アクセス日時。
DateTime update;
更新日時。
const Text toText();