У меня есть решение трех проектов:Преобразование UTC в местное время возвращает странный результат
- сердечника
- надстройки Outlook
- ASP.NET Сайт
Оба, перспективы Надстройка и Веб-сайт используют те же методы из проекта Core для получения данных с SQL Server. Когда я пишу свои данные в базу данных, конвертировать все DateTime
значения двух таблиц в время UTC:
POLL_START POLL_END
2013-07-31 12:00:00.000 2013-08-01 12:00:00.000
и
PICK_DATE
2013-07-31 12:00:48.000
2013-07-31 13:00:12.000
Когда я получаю данные в моей надстройки Outlook, это правильный результат:
При открытии же на моем сайте, кирки прекрасны:
Но мое время начала и конца являются «сломанной» - смещение добавляется, Бьют используются неправильные часы:
Вот код для моего преобразования, что и в Outlook и веб-сайт, использование:
private static void ConvertToLocalTime(POLL item)
{
item.POLL_START = item.POLL_START.FromUTC();
item.POLL_END = item.POLL_END.FromUTC();
}
private static void ConvertToLocalTime(PICK pick)
{
if (pick.PICK_DATE != null) pick.PICK_DATE = ((DateTime)pick.PICK_DATE).FromUTC();
}
И реализация DateTime.FromUtc()
:
public static DateTime FromUTC(this DateTime value)
{
var local = TimeZoneInfo.Local;
return TimeZoneInfo.ConvertTime(value, TimeZoneInfo.Utc, local);
}
У меня был один и тот же результат с DateTime.ToLocalTime()
. Любая идея?
EDIT 1:
Это как начало и конец получает отображается на веб-сайте (конец с End
вместо Start
):
var startCell = new TableCell
{
Text = String.Format(
@"<a href='{0}' title='{2}' target='_blank'>{1:dd.MM.yyyy HH:mm \U\T\Czzz}</a>",
Common.GetTimeAndDateHyperlink(_poll.Start, "Vote Start"),
_poll.Start,
ConvertToLocalTimeZone),
CssClass = "InfoContent"
};
И кирки:
answerCell = new TableCell
{
Text = String.Format(
@"<a href='{0}' title='{2}' target='_blank'>{1}</a>",
Common.GetTimeAndDateHyperlink(ao.Time, ao.RealAnswer),
ao.RealAnswer,
ConvertToLocalTimeZone)
};
ao.RealAnswer
возвращает форматированную строку DateTime:
return String.Format(WholeTime == true ? "{0:d}" : @"{0:dd.MM.yyyy HH:mm \U\T\Czzz}", Time);
Что вы хотите, чтобы показать свое время на вашей веб-странице? – Romoku
@Romoku добавил код – Herdo
Я собираюсь угадать, что свойство [Kind] (http://msdn.microsoft.com/en-us/library/system.datetime.kind.aspx) отличается между двумя. – Greg