次のように現在の日時を得ることができます。
var d : DateTime;
d = DateTime.Now;
年・月・日、または、年〜秒を指定して日時を得ることができます。
var d2 : DateTime = new DateTime(2004, 1, 8);
var d3 : DateTime = new DateTime(2004, 1, 8, 18, 30, 5);
上は午前0時に設定されます。
得られた日時は次のように色々な形式で表示できます。
import System;
var d = DateTime.Now;
print(d.ToLocalTime()); //Fri Jan 9 03:40:56 UTC+9 2004
print(d.ToLongDateString()); //2004年1月8日
print(d.ToLongTimeString()); //18:40:56
print(d.ToOADate()); //37994.77842700231
print(d.ToShortDateString()); //2004/01/08
print(d.ToShortTimeString()); //18:40
print(d.ToString()); //2004/01/08 18:40:56
print(d.ToUniversalTime()); //Thu Jan 8 09:40:56 UTC+9 2004
これで不満な場合もカスタマイズできます。たとえば、
print(d.ToString("mm:ss")); //40:56
詳しくは、
書式(2)。
得られた日時の年や時などを整数で得られます。
print(d.ToString()); //2004/01/08 19:51:18
print(d.Year); //2004
print(d.Month); //1
print(d.Day); //8
print(d.DayOfWeek); //Thursday
print(d.Hour); //19
print(d.Minute); //51
print(d.Second); //18
print(d.Millisecond); //531
DayOfWeekは列挙体を返すため、
表示は上のようになりますが、
実際には日曜0、土曜6の整数になります。
print(d.DayOfWeek+0); //4
その他に年間積算日というのもあります。
print(d.DayOfYear); //8
1月だと意味がありませんが。
どうせなら何週目かというのもあればいいのに。
ある日時からある日時の時間間隔というものをTimeSpanとして得られます。
import System;
import System.Threading;
var d0 = DateTime.Now;
Thread.Sleep(10000); //10秒待つ
var d1 = DateTime.Now;
var t : TimeSpan;
t = d1.Subtract(d0); //d0からd1の時間間隔
print(t.TotalMilliseconds); //10000
このようにある時点から何秒経ったかなどがわかります。
他にも、
TotalDays・
TotalSeconds
などのプロパティがあります。
これを日時に足し引きして新しい日時を得られます。
//上のつづき
print(d1); //Fri Jan 9 19:44:06 UTC+9 2004
var d2 = d1.Add(t); //10秒足す
print(d2); //Fri Jan 9 19:44:16 UTC+9 2004
var d3 = d1.Subtract(t); //10秒引く
print(d3); //Fri Jan 9 19:43:56 UTC+9 2004
TimeSpanを使わなくても、足し引きすべき時間がわかっていれば、
AddDays・
AddSeconds
などのメソッドを使うこともできます。
//上のつづき
var d4 = d1.AddSeconds(-10); //10秒引く
print(d4); //Fri Jan 9 19:43:56 UTC+9 2004
上のようにメソッドを使わずとも演算子で簡単に記述できます。
//上のつづき
//演算子を使うには型宣言が必要らしい
var d5 : DateTime = DateTime.Now;
var d6 : DateTime = d5 - t;
var t2 : TimeSpan = d6 - d5;
比較演算子も用意されています。
//上のつづき
print(d5 > d6); //true
適当な文字列を日時と解釈できます。
var d4 : DateTime = DateTime.Parse("2004/1/9");
うるう年かどうか判定するメソッドも用意されています。
var b : boolean = DateTime.IsLeapYear(2004);
引数に年を表す整数を指定します。