在.NET Core使用TimeZone將客戶端時間轉服務器本地時間但編譯提示已過期


當我們的項目國際化后,需要處理時區問題。

在.NET Core之前我們可以通過以下代碼將客戶端時間轉換為服務端時間:

DateTime serverTime = TimeZone.CurrentTimeZone.ToLocalTime(clientTime);

在.NET Core里,TimeZone類已被標記為已過期,那么我們應該如何使用不過期的API進行時區轉換呢?

DateTime serverTime = TimeZoneInfo.ConvertTime(clientTime, TimeZoneInfo.Local);

以下是博主自己寫的DateTimeExtensions類中的轉換為服務端時間的擴展方法:

public static class DateTimeExtensions
{
    /// <summary>
    /// 將客戶端時間轉換為服務端本地時間
    /// </summary>
    /// <param name="clientTime">客戶端時間</param>
    /// <returns>返回服務端本地時間</returns>
    public static DateTime ToServerLocalTime(this DateTime clientTime)
    {
        //DateTime serverTime1 = TimeZone.CurrentTimeZone.ToLocalTime(clientTime); //在.NET Core標識已過期的類TimeZone的寫法
        DateTime serverTime2 = TimeZoneInfo.ConvertTime(clientTime, TimeZoneInfo.Local);//等價的建議寫法
        return serverTime2;
    }
}

 

關於TimeZone與TimeZoneInfo類的區別/比較,請參考:

https://www.cnblogs.com/dongjh/archive/2012/08/30/2664676.html

在不同時區之間轉換時間,請參考MSDN案例:

https://msdn.microsoft.com/zh-cn/library/bb397769.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM