using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Common.Helper { public class DateHelper { public static DateTime GetDateTime(long timestamp) { DateTime dtStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long lTime = long.Parse(timestamp + "0000000"); // 如果时间戳是秒级,需要转换为毫秒级 TimeSpan timeSpan = new TimeSpan(lTime); DateTime targetDt = dtStart.Add(timeSpan); return targetDt; } public static DateTime GetDateTime(long timestamp, TimeZoneInfo targetTimeZone) { DateTime dtStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long lTime = long.Parse(timestamp + "0000000"); // 如果时间戳是秒级,需要转换为毫秒级 TimeSpan timeSpan = new TimeSpan(lTime); DateTime targetDt = dtStart.Add(timeSpan); return TimeZoneInfo.ConvertTimeFromUtc(targetDt, targetTimeZone); } public static DateTime StampToDateTime(string time) { time = time.Substring(0, 10); double timestamp = Convert.ToInt64(time); System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); dateTime = dateTime.AddSeconds(timestamp).ToLocalTime(); return dateTime; } public static string TimeSubTract(DateTime time1, DateTime time2) { TimeSpan subTract = time1.Subtract(time2); return $"{subTract.Days} 天 {subTract.Hours} 时 {subTract.Minutes} 分 "; } /// /// 时间戳转本地时间-时间戳精确到秒 /// public static DateTime ToLocalTimeDateBySeconds(long unix) { var dto = DateTimeOffset.FromUnixTimeSeconds(unix); return dto.ToLocalTime().DateTime; } /// /// 时间转时间戳Unix-时间戳精确到秒 /// public static long ToUnixTimestampBySeconds(DateTime dt) { DateTimeOffset dto = new DateTimeOffset(dt); return dto.ToUnixTimeSeconds(); } /// /// 时间戳转本地时间-时间戳精确到毫秒 /// public static DateTime ToLocalTimeDateByMilliseconds(long unix) { var dto = DateTimeOffset.FromUnixTimeMilliseconds(unix); return dto.ToLocalTime().DateTime; } /// /// 时间转时间戳Unix-时间戳精确到毫秒 /// public static long ToUnixTimestampByMilliseconds(DateTime dt) { DateTimeOffset dto = new DateTimeOffset(dt); return dto.ToUnixTimeMilliseconds(); } /// /// 声明期间类型枚举 /// public enum Period { Day, Week, Month, Year }; /// /// 获取指定期间的起止日期 /// /// 期间类型 /// 开始日期 /// 结束日期 public static void GetPeriod(Period period, out DateTime beginDate, out DateTime endDate) { int year = DateTime.Today.Year; int month = DateTime.Today.Month; switch (period) { case Period.Year: //年 beginDate = new DateTime(year, 1, 1); endDate = new DateTime(year, 12, 31); break; case Period.Month: //月 beginDate = new DateTime(year, month, 1); endDate = beginDate.AddMonths(1).AddDays(-1); break; case Period.Week: //周 int week = (int)DateTime.Today.DayOfWeek; if (week == 0) week = 7; //周日 beginDate = DateTime.Today.AddDays(-(week - 1)); endDate = beginDate.AddDays(6); break; default: //日 beginDate = DateTime.Today; endDate = DateTime.Today; break; } } } }