namespace LMS.Common.Extensions { public class BeijingTimeExtension { /// /// 获取北京时间,将时区转换为北京时间 /// /// public static DateTime GetBeijingTime() { return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("China Standard Time")); } /// /// 智能转换时间为北京时间 /// 如果是UTC时间则转换,否则直接返回 /// /// 输入的时间 /// 北京时间 public static DateTime TransferUtcToBeijingTime(DateTime dateTime) { // 只有UTC时间才需要转换 if (dateTime.Kind == DateTimeKind.Utc) { try { // 优先使用系统时区信息 return TimeZoneInfo.ConvertTimeFromUtc(dateTime, TimeZoneInfo.FindSystemTimeZoneById("China Standard Time")); } catch (TimeZoneNotFoundException) { try { // Linux系统可能使用这个ID return TimeZoneInfo.ConvertTimeFromUtc(dateTime, TimeZoneInfo.FindSystemTimeZoneById("Asia/Shanghai")); } catch (TimeZoneNotFoundException) { // 找不到时区就手动加8小时 return dateTime.AddHours(8); } } } // 非UTC时间直接返回 return dateTime; } } }