2019年1月11日 星期五

[C#] 各時區間時間轉換(DateTimeOffset 修改時區)

[C#] 各時區間時間轉換(DateTimeOffset 修改時區)

最近介接金流需要回傳目前時間或截止時間,但擔心Server設定的時區可能不是台灣時區,所以為了以防萬一就先把時區轉換為台灣時區,再將時間傳送到金流端。

DateTimeOffset 轉換為+08:00時區

// 將時間指定轉換為 +08:00時區
DateTimeOffset taipeiStandardTimeOffset = DateTimeOffset.Now.ToOffset(new TimeSpan(8,0,0));

實作測試
實作測試DateTimeOffset 轉換為+09:00時區


使用TimeZoneInfo.FindSystemTimeZoneById轉換DateTimeOffset 時區

var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Taipei Standard Time");
DateTimeOffset taipeiStandardTimeOffset = DateTimeOffset.Now.ToOffset(timeZoneInfo.BaseUtcOffset);

FindSystemTimeZoneById 在Windows系統會根據id比對登錄編輯程式HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones下的名稱。亦可參考Time Zone IDs

在Linux 和 macOS環境下目前還沒有機會測試,有興趣的人可以參考TimeZoneInfo.FindSystemTimeZoneById(String) Method

實作測試
實作測試DateTimeOffset 轉換為東京時區



參考資料



如有錯誤或建議,歡迎留言指教,謝謝!!
(相關內容如有侵犯隱私或著作權,請協助通知刪除,感謝)

沒有留言:

張貼留言