C#プチリファレンス

C# 日時操作

日付操作に関するサンプルです。

日時の生成

日時を生成するサンプルです。

例)DateTime型の日付を生成する
using System;

//現在日時を取得
DateTime dt1 = DateTime.Now;
(例)→2014/10/08 09:45:50

//現在日付を取得
DateTime dt2 = DateTime.Today;
(例)→2014/10/08 00:00:00

//年月日を指定してDateTimeを生成
DateTime dt3 = new DateTime(2014, 1, 31);
(例)→2014/01/31 00:00:00

//年月日時分秒を指定してDateTimeを生成
DateTime dt4 = new DateTime(2014, 12, 31, 23, 59, 59);
(例)→2014/12/31 23:59:59

//日付文字列からDateTimeを生成
DateTime dt5 = DateTime.ParseExact("2014/12/07 13:30:59", "yyyy/MM/dd HH:mm:ss", null);
(例)→2014/12/07 13:30:59

DateTime型を日付文字列にする

DateTime型をフォーマットを指定して日付文字列で取得することができます。

例)DateTime型から日付文字列に変換する
using System;
DateTime dt = DateTime.Now;

//方法1)DateTime型から日付文字列を取得する
string str1 = dt.ToString("yyyyMMdd");
(例)→ "20140927"

//方法2)DateTime型から日付文字列を取得する
string str2 = String.Format("{0:yyyy/MM/dd HH:mm:ss}", dt);
(例)→ "2016/04/04 12:34:56"

指定できるフォーマットには以下のものが用意されています。

【日付フォーマット】
フォーマット意味
yy西暦年2桁(00~99)
yyyy西暦年4桁(例:2014)
M月(1~12)
MM月(01~12)
MMMM月(1月~12月)
d日(1~31)
dd日(01~31)
H時 24時間(0~23)
HH時 24時間(00~23)
h時 12時間(1~12)
hh時 12時間(01~12)
m分(0~59)
mm分(00~59)
s秒(0~59)
ss秒(00~59)
ff1/100秒(0~99)
fff1/1000秒(0~999)
ddd曜日(月~日)
dddd曜日(月曜日~日曜日)
tt午前/午後

よく使用されるフォーマットについては、メソッドが用意されています。

【メソッドで日付文字列を取得する】
メソッド日時パターン
ToString()yyyy/MM/dd hh:mm:ss
ToShortDateString()yyyy/MM/dd
ToShortTimeString()H:mm
ToLongDateString()yyyy年M月d日
ToLongTimeString()H:mm:ss

日付の部分取得

DateTime型の年や月などの部分を取得するには、いかのプロパティが用意されています。

【取得】
戻り型プロパティ意味
intYear西暦年
intMonth月(1~12)
intDay日(1~31)
intHour時間(0~23)
intMinute分(0~59)
intSecond秒(0~59)
intMillisecondミリ秒(0~999)
DayOfWeekDayOfWeek曜日
intDayOfYear1月1日からの日数(1~366)
例)DateTime型から年や曜日を取得する
//年を取得する
int bb = dt.Year;
(例)→2017

//曜日を取得する
DayOfWeek w = dt.DayOfWeek;
(例)→DayOfWeek.Monday

日時の比較

日時の比較を行うには、CompareToメソッドを使用します。

例)2014/10/01 と 2014/10/02 を比較する
DateTime dt1 = new DateTime(2014, 10, 1);
DateTime dt2 = new DateTime(2014, 10, 2);
int i = dt1.CompareTo(dt2);
→ -1

比較の大小によって、以下の値が返ります。

【結果】
dt1 < dt2 → -1 dt1 = dt2 → 0 dt1 > dt2 → 1

日時の加減算

日時の加減算には、以下のメソッドが用意されています。

【年月日時分秒の加減算メソッド】
戻り型メソッド意味
DateTimeAddYears(int value)年を加減算する
DateTimeAddMonths(int value)月を加減算する
DateTimeAddDays(int value)日を加減算する
DateTimeAddHours(int value)時間を加減算する
DateTimeAddSeconds(int value)分を加減算する
DateTimeAddMinutes(int value)秒を加減算する
DateTimeAddMilliseconds(int value)ミリ秒を加減算する
例)DateTimeの日や月を加減算する
// 5日加算する
dt.AddDays(5);

// 3か月減算する
dt.AddMonths(-3);
【月末AddMonthsの例】
2015/1/31 に AddMonths(1)をすると → 2014/2/28 2015/2/28 に AddMonths(1)をすると → 2014/3/28

日付の種類を指定してDateTimeを生成

現地時刻やUTC時刻などの種類を指定してDateTimeを生成することもできます。

例)2017/04/22 23:59:00 のDateTime型を生成する
DateTime d = new DateTime(2017, 4, 22, 23, 59, 0, DateTimeKind.Local);

指定できる日付の種類には、以下のものがあります。

【日付の種類】
定数意味
DateTimeKind.Local現地時間
DateTimeKind.UtcUTC時刻
DateTimeKind.Unspecified日付種類不明(デフォルト)
ToTop