日付と時刻の拡張メソッドがある程度貯まってきたのでこのページにまとめておこうと思います。
特定の日付の判定処理が多いですが、カレンダー関連のアプリケーションを作成するのに役に立ったメソッドです。
拡張メソッドについては以下の記事を参照してください。
目次
- 1 日付と時間の拡張メソッド DateTimeExtensions
- 2 DateTimeExtensions クラスのメソッド一覧
- 3 Age メソッド
- 4 DayOfWeekAsNumber メソッド
- 5 EndOfMonth メソッド
- 6 EndOfWeek メソッド
- 7 IsFriday メソッド
- 8 IsMonday メソッド
- 9 IsSaturday メソッド
- 10 IsSunday メソッド
- 11 IsThursday メソッド
- 12 IsToday メソッド
- 13 IsTomorrow メソッド
- 14 IsTuesday メソッド
- 15 IsWednesday メソッド
- 16 IsWeekday メソッド
- 17 IsWeekend メソッド
- 18 IsYesterday メソッド
- 19 LastWeek メソッド
- 20 NextWeek メソッド
- 21 StartOfWeek メソッド
- 22 Tomorrow メソッド
- 23 Yesterday メソッド
- 24 参考記事
日付と時間の拡張メソッド DateTimeExtensions
日付と時間の拡張メソッドは DateTimeExtensions クラスに実装しています。
1 2 3 4 5 6 7 8 9 10 11 12 |
using System; namespace Extensions { /// <summary> /// DateTime 拡張メソッドクラス /// </summary> public static class DateTimeExtensions { // ... } } |
DateTimeExtensions クラスのメソッド一覧
DateTimeExtensions クラスに実装しているメソッドの一覧です。
メソッド名 | 説明 | Age | 生年月日に対する現在の年齢を取得します。 |
---|---|
Age | 対象の日付時点での年齢を取得します。 |
DayOfWeekAsNumber | 曜日を数字で取得します。 |
EndOfMonth | 日付を含む月の最後の日 (末日) を返します。 |
EndOfWeek | 日付を含む週の最後の日 (土曜日) を取得します。 |
IsFriday | 金曜日かどうかを判定します。 |
IsMonday | 月曜日かどうかを判定します。 |
IsSaturday | 土曜日かどうかを判定します。 |
IsSunday | 日曜日かどうかを判定します。 |
IsThursday | 木曜日かどうかを判定します。 |
IsToday | 今日かどうかを判定します。 |
IsTomorrow | 明日かどうかを判定します。 |
IsTuesday | 火曜日かどうかを判定します。 |
IsWednesday | 水曜日かどうかを判定します。 |
IsWeekday | 平日かどうかを判定します。 |
IsWeekend | 週末かどうかを判定します。 |
IsYesterday | 昨日かどうかを判定します。 |
LastWeek | 先週を取得します。 |
NextWeek | 翌週を取得します。 |
StartOfWeek | 日付を含む週の最初の日 (日曜日) を取得します。 |
Tomorrow | 明日を取得します。 |
Yesterday | 昨日を取得します。 |
Age メソッド
年齢を計算した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/// <summary> /// 生年月日に対する現在の年齢を取得します。 /// </summary> /// <param name="this">生年月日</param> /// <returns>年齢を返します。</returns> public static int Age(this DateTime @this) { DateTime today = DateTime.Today; if (today.Month < @this.Month || (today.Month == @this.Month && today.Day < @this.Day)) { return today.Year - @this.Year - 1; } return today.Year - @this.Year; } /// <summary> /// 対象の日付時点での年齢を取得します。 /// </summary> /// <param name="this">対象日付</param> /// <param name="dateOfBirth">生年月日</param> /// <returns>年齢</returns> public static int Age(this DateTime @this, DateTime dateOfBirth) { if (@this.Month < dateOfBirth.Month || (@this.Month == dateOfBirth.Month && @this.Day < dateOfBirth.Day)) { return @this.Year - dateOfBirth.Year - 1; } return @this.Year - dateOfBirth.Year; } |
引数を指定しない形式のAgeメソッドは生年月日に対してシステム日付時点での年齢を計算します。
引数をdateOfBirthを指定する形式のAgeメソッドは引数の生年月日に対して任意の日付時点での年齢を計算できます。
例えば1990年6月7日生まれの人の2010年5月15日時点での年齢を計算する場合は
「var age = new DateTime(2010, 5, 15).Age(new DateTime(1990, 6, 7));」
で取得することができます。
DayOfWeekAsNumber メソッド
曜日を表す数値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 曜日を数字で取得します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>曜日を表す数字を返します。0: 日曜日 ~ 6: 土曜日</returns> public static short DayOfWeekAsNumber(this DateTime @this) { return (short)@this.DayOfWeek; } |
EndOfMonth メソッド
月末の日付を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 日付を含む月の最後の日 (末日) を返します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>日付の属する月の最終日を返します。</returns> public static DateTime EndOfMonth(this DateTime @this) { return new DateTime(@this.Year, @this.Month, 1).AddMonths(1).AddDays(-1); } |
EndOfWeek メソッド
週末の日付(土曜日)を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 日付を含む週の最後の日 (土曜日) を取得します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>週の終了日</returns> public static DateTime EndOfWeek(this DateTime @this) { return new DateTime(@this.Year, @this.Month, @this.Day).AddDays(6 - (int)@this.DayOfWeek); } |
IsFriday メソッド
日付の曜日が金曜日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 金曜日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>金曜日の場合に true を返します。</returns> public static bool IsFriday(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Friday; } |
IsMonday メソッド
日付の曜日が月曜日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 月曜日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>月曜日の場合に true を返します。</returns> public static bool IsMonday(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Monday; } |
IsSaturday メソッド
日付の曜日が土曜日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 土曜日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>土曜日の場合に true を返します。</returns> public static bool IsSaturday(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Saturday; } |
IsSunday メソッド
日付の曜日が日曜日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 日曜日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>日曜日の場合に true を返します。</returns> public static bool IsSunday(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Sunday; } |
IsThursday メソッド
日付の曜日が木曜日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 木曜日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>木曜日の場合に true を返します。</returns> public static bool IsThursday(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Thursday; } |
IsToday メソッド
日付が今日の日付(システム日付)と同一かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 今日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>今日の場合に true を返します。</returns> public static bool IsToday(this DateTime @this) { return @this.Date == DateTime.Today; } |
日付が明日の日付(システム日付の翌日)と同一かどうかを判定した値を取得するメソッドです。
IsTomorrow メソッド
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 明日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>明日の場合に true を返します。</returns> public static bool IsTomorrow(this DateTime @this) { return @this.Date == DateTime.Today.AddDays(1); } |
IsTuesday メソッド
日付の曜日が火曜日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 火曜日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>火曜日の場合に true を返します。</returns> public static bool IsTuesday(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Tuesday; } |
IsWednesday メソッド
日付の曜日が水曜日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 水曜日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>水曜日の場合に true を返します。</returns> public static bool IsWednesday(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Wednesday; } |
IsWeekday メソッド
日付が平日かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 平日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>平日の場合に true を返します。</returns> public static bool IsWeekday(this DateTime @this) { return @this.DayOfWeek != DayOfWeek.Saturday && @this.DayOfWeek != DayOfWeek.Sunday; } |
IsWeekend メソッド
日付が週末(土曜日または日曜日)かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 週末かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>週末の場合に true を返します。</returns> public static bool IsWeekend(this DateTime @this) { return (@this.DayOfWeek == DayOfWeek.Saturday || @this.DayOfWeek == DayOfWeek.Sunday); } |
IsYesterday メソッド
日付が昨日の日付(システム日付の前日)と同一かどうかを判定した値を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 昨日かどうかを判定します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>昨日の場合に true を返します。</returns> public static bool IsYesterday(this DateTime @this) { return @this.Date == DateTime.Today.AddDays(-1); } |
LastWeek メソッド
日付の1週間前の日付を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 先週を取得します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>先週の同一曜日 (7 日前) の日付を取得します。</returns> public static DateTime LastWeek(this DateTime @this) { return @this.AddDays(-7); } |
NextWeek メソッド
日付の1週間後の日付を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 翌週を取得します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>翌週の同一曜日 (7 日後) の日付を取得します。</returns> public static DateTime NextWeek(this DateTime @this) { return @this.AddDays(7); } |
StartOfWeek メソッド
週初の日付(日曜日)を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 日付を含む週の最初の日 (日曜日) を取得します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>週の開始日</returns> public static DateTime StartOfWeek(this DateTime @this) { return new DateTime(@this.Year, @this.Month, @this.Day).AddDays(-(int)@this.DayOfWeek); } |
Tomorrow メソッド
翌日の日付を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 明日を取得します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>明日を返します。</returns> public static DateTime Tomorrow(this DateTime @this) { return @this.AddDays(1); } |
Yesterday メソッド
前日の日付を取得するメソッドです。
1 2 3 4 5 6 7 8 9 |
/// <summary> /// 昨日を取得します。 /// </summary> /// <param name="this">対象日付</param> /// <returns>昨日を返します。</returns> public static DateTime Yesterday(this DateTime @this) { return @this.AddDays(-1); } |
今後も日付と時間の拡張メソッドが貯まってきたら随時追加していきます。
参考記事
文字列の拡張メソッドについては、以下の記事をご参照ください。
10進数の拡張メソッドについては、以下の記事をご参照ください。
倍精度浮動小数点数の拡張メソッドについては、以下の記事をご参照ください。
コレクションの拡張メソッドについては、以下の記事をご参照ください。