using ERP.Framework.Constants; namespace System { public static class DateTimeExtension { /// /// 获取当前日期时间与指定日期时间之间的年龄差 /// /// 指定日期 /// 返回两个日期之间的年龄差 public static int GetAge(this DateTime @this) { //如果当年月份小于指定日期的月份, //或者当年月份等于指定日期的月份但当年日期小于指定日期的日期, //则返回当前年份与指定日期年份之间的差值减一 if (DateTime.Today.Month < @this.Month || DateTime.Today.Month == @this.Month && DateTime.Today.Day < @this.Day) { return DateTime.Today.Year - @this.Year - 1; } // 返回当前年份与指定日期年份之间的差值 return DateTime.Today.Year - @this.Year; } /// /// 判断当前日期是否为工作日 /// /// 要进行判断的日期 /// 当前日期是工作日返回 true ,当前日期是周末返回 false public static bool IsWeekDay(this DateTime @this) { return !(@this.DayOfWeek == DayOfWeek.Saturday || @this.DayOfWeek == DayOfWeek.Sunday); } /// /// 判断当前日期是否为周末 /// /// 要进行判断的日期 /// 当前日期是周末返回 true ,当前日期是工作日返回 false public static bool IsWeekendDay(this DateTime @this) { return @this.DayOfWeek == DayOfWeek.Saturday || @this.DayOfWeek == DayOfWeek.Sunday; } /// /// 获取当前日期所在星期的第一天,即本周的起始日期 /// /// 要进行处理的日期 /// 星期的起始日,默认为星期天 /// 返回本周的起始日期 public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startDayOfWeek = DayOfWeek.Sunday) { var start = new DateTime(dt.Year, dt.Month, dt.Day); if (start.DayOfWeek != startDayOfWeek) { var d = startDayOfWeek - start.DayOfWeek; if (startDayOfWeek <= start.DayOfWeek) { return start.AddDays(d); } return start.AddDays(-7 + d); } return start; } /// /// 将当前日期时间转换为 Unix 时间戳(以秒为单位) /// /// 要进行转换的日期时间 /// 返回 Unix 时间戳 public static TimeSpan ToEpochTimeSpan(this DateTime @this) => @this.ToUniversalTime().Subtract(new DateTime(1970, 1, 1)); /// /// 判断当前日期是否在指定日期范围内 /// /// 要进行判断的日期< /// 日期范围的最小值 /// 日期范围的最大值 /// 当前日期在指定的日期范围内返回 true ,当前日期不在指定的日期范围内返回 false public static bool InRange(this DateTime @this, DateTime minValue, DateTime maxValue) { return @this.CompareTo(minValue) >= 0 && @this.CompareTo(maxValue) <= 0; } /// /// 返回日期字符串 (yyyy/MM/dd) /// /// 当前日期 /// 日期字符串 public static string ToDateString(this DateTime @this) { return @this.ToString(DateTimeConstant.DATE); } /// /// 返回日期字符串 (yyyy/MM/dd HH:mm) /// /// 当前日期 /// 日期字符串 public static string ToDateShortString(this DateTime @this) { return @this.ToString(DateTimeConstant.DATE_SHORT); } /// /// 返回日期字符串 (yyyy/MM/dd HH:mm:ss) /// /// 当前日期 /// 日期字符串 public static string ToDateLongString(this DateTime @this) { return @this.ToString(DateTimeConstant.DATE_LONG); } /// /// 返回日期字符串 (yyyy-MM-dd) /// /// 当前日期 /// 日期字符串 public static string ToDateTimeString(this DateTime @this) { return @this.ToString(DateTimeConstant.DETE_TIME); } /// /// 返回日期字符串 (yyyy-MM-dd HH:mm) /// /// 当前日期 /// 日期字符串 public static string ToDateTimeShortString(this DateTime @this) { return @this.ToString(DateTimeConstant.DETE_TIME_SHORT); } /// /// 返回日期字符串 (yyyy-MM-dd HH:mm:ss) /// /// 当前日期 /// 日期字符串 public static string ToDateTimeLongString(this DateTime @this) { return @this.ToString(DateTimeConstant.DETE_TIME_LONG); } } }