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) |
ff | 1/100秒(0~99) |
fff | 1/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型の年や月などの部分を取得するには、いかのプロパティが用意されています。
戻り型 | プロパティ | 意味 |
---|---|---|
int | Year | 西暦年 |
int | Month | 月(1~12) |
int | Day | 日(1~31) |
int | Hour | 時間(0~23) |
int | Minute | 分(0~59) |
int | Second | 秒(0~59) |
int | Millisecond | ミリ秒(0~999) |
DayOfWeek | DayOfWeek | 曜日 |
int | DayOfYear | 1月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
日時の加減算
日時の加減算には、以下のメソッドが用意されています。
戻り型 | メソッド | 意味 |
---|---|---|
DateTime | AddYears(int value) | 年を加減算する |
DateTime | AddMonths(int value) | 月を加減算する |
DateTime | AddDays(int value) | 日を加減算する |
DateTime | AddHours(int value) | 時間を加減算する |
DateTime | AddSeconds(int value) | 分を加減算する |
DateTime | AddMinutes(int value) | 秒を加減算する |
DateTime | AddMilliseconds(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.Utc | UTC時刻 |
DateTimeKind.Unspecified | 日付種類不明(デフォルト) |