using System; namespace QYZH.InteractiveMagazine.Common.Extensions { /// /// 日期时间扩展方法 /// public static class DateTimeExtension { /// /// 时间戳起始日期 /// public static readonly DateTime TimestampStart = new(1970, 1, 1, 0, 0, 0, 0); /// /// 转换为Unix时间戳(秒) /// /// 日期时间 /// Unix时间戳 public static long ToTimestamp(this DateTime dateTime) { return new DateTimeOffset(dateTime.ToUniversalTime()).ToUnixTimeSeconds(); } /// /// 从Unix时间戳(秒)转换为DateTime /// /// Unix时间戳 /// 日期时间 public static DateTime FromTimestamp(long timestamp) { return DateTimeOffset.FromUnixTimeSeconds(timestamp).LocalDateTime; } /// /// 转换为指定格式的日期时间字符串 /// /// 日期时间 /// 格式字符串,默认为"yyyy-MM-dd HH:mm:ss" /// 格式化的日期时间字符串 public static string ToDateTimeString(this DateTime dateTime, string format = "yyyy-MM-dd HH:mm:ss") { return dateTime.ToString(format); } /// /// 从生日计算年龄 /// /// 生日日期 /// 年龄 public static int GetAge(this DateTime birthday) { int age = DateTime.Now.Year - birthday.Year; if (DateTime.Now.DayOfYear < birthday.DayOfYear) { age--; } return age; } /// /// 判断是否是今天 /// /// 日期时间 /// 是否是今天 public static bool IsToday(this DateTime dateTime) { return dateTime.Date == DateTime.Today; } /// /// 获取当天开始时间(00:00:00) /// /// 日期时间 /// 当天开始时间 public static DateTime ToStartOfDay(this DateTime dateTime) { return dateTime.Date; } /// /// 获取当天结束时间(23:59:59.999) /// /// 日期时间 /// 当天结束时间 public static DateTime ToEndOfDay(this DateTime dateTime) { return dateTime.Date.AddDays(1).AddTicks(-1); } public static long ToTimestamp(this DateTime dateTime, bool milliseconds = false) { var timestamp = dateTime.ToUniversalTime() - TimestampStart; return (long)(milliseconds ? timestamp.TotalMilliseconds : timestamp.TotalSeconds); } public static long ToMillisecondsTimestamp(this DateTime dateTime) { return ToTimestamp(dateTime, true); } } }