.NET > 日付時刻


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

System.DateTime

時刻取得
DateTime.Now 2001/12/12 12:31:25 システムの現在日時を取得
DateTime.Today 2001/12/12 00:00:00 システムの現在日付を取得
DateTime.UtcNow システムの現在日時をUTCで取得
オペレーション
DateTime(2001,12,12) 2001/12/12 00:00:00 任意の日付で時刻を作成
DateTime(2001,12,12,12,31,25) 2001/12/12 12:31:25 任意の日時で時刻を作成

DateTime型のプロパティには日時の各要素を取得できる。

dt.Date 2001/12/12 00:00:00 同じ日付を示す新しいインスタンスの取得(時間はクリアされる)
dt.Year 2001 西暦の取得
dt.Month 12 月の取得(1~12)
dt.Day 12 月の日付を取得
dt.DayOfWeek Friday 曜日を文字列で取得
dt.Hour 12 時間の取得(0~23)
dt.Minute 31 分の取得(0~59)
dt.Second 25 秒の取得(0~59)
dt.DayOfYear 346 年間の経過日数

Javaと違い、月は「1」からのインデックスであることに注意。1月を示す場合は「1」、12月は「12」となる。(Javaでは1月は「0」、12月は「11」だった)

日時の演算

DateTimeには日時を演算するためのメンバメソッドが実装されている。(MSDN DateTime メンバ)

dt.AddDays(10);
dt.AddDays(-10);

これらは正負どちらの値も演算することができる。演算した結果、月や年をまたぐ場合には月や年の繰り上げや繰り下げが行われる。

DateTime dt = DateTime(2010,07,28,23,59,00); // 2010/7/28 23:59:00
dt = dt.AddDays(4);
Console.WriteLine( dt ); // 2010/8/1 23:59:00

日付の比較

2つの日付(DateTime)を比較するにはDateTime.Compareメソッドを使用する。
このメソッドは、2つの日付を比較した際に、同じか、最初の日付が過去であるか、最初の日付が未来であるか、によって異なった戻り値を返す。

DateTime t1 = new DateTime(1999,10,15); // 1999年10月15日
DateTime t2 = new DateTime(2010,10,15); // 2010年10月15日
 
if( DateTime.Compare(t1,t2) < 0){
	// t1はt2より過去である
}
比較 意味 戻り値
t1 < t2 t1がt2より過去の日時 0より小さい値( < 0 )
t1 == t2 t1とt2が同じ日時 0
t1 > t2 t1がt2より未来の日時 0より大きい値( > 0 )

月末日

ある年のある月の末日が何日になるかを知りたい場合は DateTime.DaysInMonth静的関数 を使用すればよい。

int dayCount = DateTime.DaysInMonth(2010,7); // 2010年7月の日数
Console.WriteLine("{0}日" , dayCount); // "31日"

文字列から日付の作成

DateTime.Parse静的関数を使用すれば文字列からDateTimeのインスタンスを取得できます。

書式は「yyyy/MM/dd hh:mm:ss」

DateTime dt1 = DateTime.Parse("2010/8/1");
DateTime dt2 = DateTime.Parse("2010/8/1 10:15:00");

日付のロケーション

DateTimeを文字列化する際にカルチャーの日付書式形式で文字列化したい場合には次のようにする。

Console.WriteLine("現在日時 {0:f}", DateTime.Now);
 
// または、ToStringを使用する
string str = DateTime.Now.ToString("D");
Console.WriteLine("現在日時 {0}", str);

これらの方法でDateTimeを文字列化する場合の書式は、アプリケーションのランタイム時のWindows環境設定が使用される。
Windowsの環境設定を変更すると、文字列フォーマットも変更される。

「コントロールパネル→地域と言語のオプション→地域オプション」

カルチャーによる文字列化

日時を文字列として出力する際に、その日時書式は文化によって異なります。
C#では文化毎の表現方法の違いをまとめたものを「カルチャー」と呼んでいます。

DateTime dt = DateTime.Now;
 
CultureInfo myCultureInfo = new CultureInfo("en-US");
 
// カルチャーを指定して現在時刻を表示
Console.WriteLine("西暦(英語)表示 : " + dt.ToString("D", myCultureInfo));
 
 
CultureInfo ci = new CultureInfo("de-DE");
 
// カルチャーを指定して現在時刻を表示
Console.WriteLine("西暦(ドイツ)表示 : " + dt.ToString("D", ci));

西暦(英語)表示 : Wednesday, July 28, 2010
西暦(ドイツ)表示 : Mittwoch, 28. Juli 2010

カルチャーの指定は表示形式を文化に併せるだけですので、時間自体はどちらも同じ時間を示しています。

読んでいる本


Effective C#

QLOOKアクセス解析

ここを編集