namespace Atomx.Utils.Extension { public static class DateTimeExtension { /// /// 时间距离现在多久 /// /// /// public static string DateFromNow(this DateTime time) { if (time == DateTime.MinValue) { return string.Empty; } TimeSpan timeSpan = DateTime.Now - time; if (Math.Floor(timeSpan.TotalDays) > 365) { return Math.Floor(timeSpan.TotalDays) / 365 + "年前"; } else if (Math.Floor(timeSpan.TotalDays) > 30) { return Math.Floor(timeSpan.TotalDays) / 30 + "月前"; } else if (Math.Floor(timeSpan.TotalDays) > 7) { return Math.Floor(timeSpan.TotalDays) / 7 + "周前"; } else if (Math.Floor(timeSpan.TotalDays) > 1) { return Math.Floor(timeSpan.TotalDays) + "天前"; } else if (Math.Floor(timeSpan.TotalHours) > 1) { return Math.Floor(timeSpan.TotalHours) + "小时前"; } else if (Math.Floor(timeSpan.TotalMinutes) > 1) { return Math.Floor(timeSpan.TotalMinutes) + "分钟前"; } else { return Math.Floor(timeSpan.TotalSeconds) + "秒前"; } } /// /// 字符串时间转换DateTime /// /// /// public static DateTime ToDateTime(this string text) { DateTime.TryParse(text, out DateTime time); return time; } /// /// 字符串时间转换DateTime /// /// /// public static DateTime ToUtcDateTime(this string text) { var state = DateTime.TryParse(text, out DateTime time); if (state) { return DateTime.SpecifyKind(time, DateTimeKind.Utc); } return DateTime.MinValue; } /// /// 获取当月第一天0时0分0秒 /// /// public static DateTime GetMonthStartDate() { return DateTime.Now.AddDays(1 - DateTime.Now.Day).Date; } /// /// 获取当月最后一天23时59分59秒 /// /// public static DateTime GetMonthEndDate() { return DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddSeconds(-1); } /// /// 获取当前时间的周一开始时间 /// /// public static DateTime GetWeekStartDate() { DateTime today = DateTime.Today; return today.AddDays(-(int)today.DayOfWeek + (int)DayOfWeek.Monday).Date; } /// /// 获取当前时间所在的周的最后一天结束时间 /// /// public static DateTime GetWeekEndDate() { DateTime today = DateTime.Today; return today.AddDays(-(int)today.DayOfWeek + (int)DayOfWeek.Monday).AddDays(7).AddSeconds(-1); } /// /// 转换成每日开始时间 /// /// /// public static DateTime ConvertStartDateTime(this DateTime time) { return time.Date; } /// /// 转换成每日开始UTC时间 /// /// /// public static DateTime ConvertStartDateUTCTime(this DateTime time) { return DateTime.SpecifyKind(time.Date, DateTimeKind.Utc); } /// /// 转换成每日结束时间 /// /// /// public static DateTime ConvertEndDateTime(this DateTime time) { return time.Date.AddDays(1).AddSeconds(-1); } /// /// 转换成每日结束UTC时间 /// /// /// public static DateTime ConvertEndDateUTCTime(this DateTime time) { return DateTime.SpecifyKind(time.Date.AddDays(1).AddSeconds(-1), DateTimeKind.Utc); } /// /// long --> DateTime /// /// /// public static DateTime ConvertLongToDateTime(this long d) { DateTime dtStart = TimeZoneInfo.ConvertTimeToUtc(new DateTime(1970, 1, 1)); long lTime = long.Parse(d + "0000"); TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(toNow); return dtResult; } public static DateTime NumberToDateTime(this string number) { var year = number.Substring(0, 4); //Console.WriteLine($"年:{year}"); var month = number.Substring(4, 2); //Console.WriteLine($"月:{month}"); var day = number.Substring(6, 2); //Console.WriteLine($"日:{day}"); var hour = number.Substring(8, 2); //Console.WriteLine($"时:{hour}"); var minute = number.Substring(10, 2); //Console.WriteLine($"分:{minute}"); var second = number.Substring(12); //Console.WriteLine($"秒:{second}"); var datetime = $"{year}-{month}-{day} {hour}:{minute}:{second}"; DateTime date = DateTime.Parse(datetime); return date; } } }