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

53 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace LMS.Common.Extensions
{
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;
}
}
}