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;
}
}
}