C#における日付・時刻表示のフォーマットとその差分の求め方を紹介します。日時データを扱うソフトを作る場合や経過日数を扱う場合に役立ちます。過去記事ではWPFでカレンダーを使用する方法も紹介していますのでそれと合わせて活用してみると良いです。
DateTimeで日付を取得
C#には日付を表すDateTime構造体があります。
生成時の引数の数で時刻まで指定するかが決まります。
// 日付を指定したオブジェクトを作成 DateTime mydate = new DateTime(2222, 2, 2); Console.WriteLine(mydate); // 2222/02/22 0:00:00 // 日時と時間を指定したオブジェクトを作成 DateTime mydate2 = new DateTime(2222, 2, 2, 23, 59, 01); Console.WriteLine(mydate2); // 2222/02/22 23:59:01
日付(DateTime)の様々なフォーマット
DateTimeオブジェクトをそのまま表示すると年月と時間が表示されます。
用途に応じた適切なフォーマットを使いましょう。
//日時と時間を指定したオブジェクトを作成(今回は、2222/3/4 23:59:1) DateTime date1 = new DateTime(2222, 3, 4, 23, 59, 1); //指定せず表示表示 Console.WriteLine(date1); // 2222/03/04 23:59:01 //よく使うであろう表示(ToStringメソッドを活用) Console.WriteLine(date1.ToString("yyyyMMdd")); // 22220304 Console.WriteLine(date1.ToString("yyyy/MM/dd HH:mm:ss")); // 2222/03/04 23:59:01 //一文字で表示形式を指定 Console.WriteLine(date1.ToString("d")); // 2222/03/04 Console.WriteLine(date1.ToString("f")); // 2222年3月4日 23:59:01 Console.WriteLine(date1.ToString("F")); // 2222年3月4日 23:59:01 //時間情報を削除(0:00:00になる) Console.WriteLine(date1.Date); // 2222/03/04 0:00:00 //曜日 Console.WriteLine(date1.DayOfWeek); // Monday //年・月・日を個別に表示(下記以外にもHour,Minute,Secondなどがある) Console.WriteLine(date1.Year); // 2222 Console.WriteLine(date1.Month); // 3 Console.WriteLine(date1.Day); // 4
個人的にはyyyyMMddを覚えておけば良さそうです。
日付の差分(経過日数)をTimeSpanで計算
TimeSpanは日時の間隔(差分)を表すオブジェクトです。
2つのDateTimeを減算して求まる間隔を代入できます。
//日付を2つ宣言(今回は、2222/3/4 23:59:1) DateTime date1 = new DateTime(2220, 1, 1, 0, 0, 0); DateTime date2 = new DateTime(2222, 1, 1, 23, 59, 59); //差分の計算 TimeSpan span = date2 - date1; //そのまま表示 Console.WriteLine(span); // 731.23:59:59 //日数のみ Console.WriteLine(span.Days); // 731
簡単に経過日数を求められました。
以下はWPFでカレンダーを活用する方法。
コメント