LMS.service/LMS.Common/Extensions/BeijingTimeExtension.cs

53 lines
1.8 KiB
C#
Raw Normal View History

namespace LMS.Common.Extensions
2024-10-13 17:04:47 +08:00
{
public class BeijingTimeExtension
{
/// <summary>
/// 获取北京时间,将时区转换为北京时间
/// </summary>
/// <returns></returns>
public static DateTime GetBeijingTime()
{
return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,
TimeZoneInfo.FindSystemTimeZoneById("China Standard Time"));
}
/// <summary>
/// 智能转换时间为北京时间
/// 如果是UTC时间则转换否则直接返回
/// </summary>
/// <param name="dateTime">输入的时间</param>
/// <returns>北京时间</returns>
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;
}
2024-10-13 17:04:47 +08:00
}
}