Devneko.net

拡張メソッドによるDateTime型の拡張

C# Tips Index

C#3.0で追加された拡張メソッドを使用してDateTime型に
特定の日や月の始めと終わりの日時を取得できるメソッドを追加してみました。

    /// <summary>
    /// DateTimeの拡張メソッド
    /// </summary>
    public static class DateTimeExtensions
    {
        /// <summary>
        /// 日の最初の日時を取得する。
        /// </summary>
        /// <param name="date">日付</param>
        /// <returns>日の最初の日時</returns>
        public static DateTime GetStartOfDay(this DateTime date)
        {
            return new DateTime(date.Year, date.Month, date.Day);
        }

        /// <summary>
        /// 日の最後の日時を取得する。
        /// </summary>
        /// <param name="date">日付</param>
        /// <returns>日の最初の日時</returns>
        public static DateTime GetEndOfDay(this DateTime date)
        {
            return new DateTime(date.Year, date.Month, date.Day, 23, 59, 59, 999);
        }

        /// <summary>
        /// 月の最初の日時を取得する。
        /// </summary>
        /// <param name="date">日付</param>
        /// <returns>月の最初の日時</returns>
        public static DateTime GetStartOfMonth(this DateTime date)
        {
            return new DateTime(date.Year, date.Month, 1);
        }

        /// <summary>
        /// 月の最後の日時を取得する。
        /// </summary>
        /// <param name="date">日付</param>
        /// <returns>月の最後の日時</returns>
        public static DateTime GetEndOfMonth(this DateTime date)
        {
            return date.GetStartOfMonth().AddMonths(1).AddMilliseconds(-1);
        }

        /// <summary>
        /// 年の最初の日時を取得する。
        /// </summary>
        /// <param name="date">日付</param>
        /// <returns>年の最初の日時</returns>
        public static DateTime GetStartOfYear(this DateTime date)
        {
            return new DateTime(date.Year, 1, 1);
        }

        /// <summary>
        /// 年の最後の日時を取得する。
        /// </summary>
        /// <param name="date">日付</param>
        /// <returns>年の最後の日時</returns>
        public static DateTime GetEndOfYear(this DateTime date)
        {
            return date.AddYears(1).GetStartOfYear().AddMilliseconds(-1);
        }
    }