【发布时间】:2017-08-24 16:24:36
【问题描述】:
我正在使用 ASP.Net 后端。我将所有日期从客户端保存到 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");
【问题讨论】:
-
@Hubbs 不幸的是,我已经尝试过了,但如果是当地时间,我仍然会得到 UTC 时间的最终日期。我添加了第 4 种方法的编辑,显示了此实现。
标签: c# asp.net date datetime xamarin.ios