我正在使用ASP.Net後端。我以UTC時間將所有日期從客戶端保存到數據庫。UTC date.ToLocalTime()仍然以UTC時間產生日期
我有一個後端的功能,導出一些記錄,我想將提取的日期從UTC時間轉換爲用戶的本地時間,然後再顯示它們。
我已經嘗試了大量StackOverflow中提出的解決方案,但它們都沒有將日期轉換爲本地時間,即使這在客戶端上顯示這些日期時有效。我懷疑服務器已經認爲日期是在當地時間,但我不知道如何解決它。
下面是不同的解決方案我曾嘗試:
//1.
var alertTime = record.TimeRecorded.GetValueOrDefault().ToLocalTime().ToString("hh:mm tt");
// 2.
var alertTime = record.TimeRecorded;
if (alertTime.HasValue)
{
var timeInUtc = TimeZoneInfo.ConvertTimeToUtc(alertTime.Value);
string alertTimeToLocalTime = timeInUtc.ToLocalTime().ToString("hh:mm tt");
}
//alertTimeToLocalTime is still in UTC time here
// 3.
if (alertTime.HasValue)
{
var localTime = TimeZoneInfo.ConvertTimeFromUtc(timeInUtc, TimeZoneInfo.Local);
string alertTimeToLocalTime = localTime.ToString("hh:mm tt");
}
這些都沒有設法將alertTime
轉換爲本地時間。
我錯過了什麼嗎?
編輯
//4. Another approach I had already tried which didn't work as well
var alertTime = DateTime.SpecifyKind(record.TimeRecorded.GetValueOrDefault(), DateTimeKind.Utc);
alertTimeToLocalTime = alertTime.ToLocalTime().ToString("hh:mm tt");
Check out https://stackoverflow.com/questions/179940/convert-utc-gmt-time-to-local-time回答最佳回答 – Hubbs
@Hubbs不幸的是,我已經嘗試過這一點,我仍然得到我在UTC時間的最後日期而不是當地時間。我用第4種方法添加了一個編輯,顯示了這個實現。 – naffie