我正在使用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