Mam roztwór trzech projektów:Konwersja UTC na czas lokalny zwraca dziwny wynik
- rdzenia
- Outlook Add-In
- ASP.NET Witryna
Zarówno Outlook Dodatek i strona internetowa używają tych samych metod z projektu Core, aby pobrać dane z SQL Server. Kiedy piszę moich danych w bazie danych, przekonwertować wszystkie DateTime
wartości dwóch stołów do czasu UTC:
POLL_START POLL_END
2013-07-31 12:00:00.000 2013-08-01 12:00:00.000
i
PICK_DATE
2013-07-31 12:00:48.000
2013-07-31 13:00:12.000
Kiedy uzyskać dane w moim Outlook Add-in, to jest poprawny wynik:
Otwierając to samo w mojej stronie, że rozgrywki są w porządku:
Ale mój czas rozpoczęcia i zakończenia są „złamane” - offset dodaje Bute stosowane są niewłaściwe godziny:
Oto kod dla mojego konwersji, że zarówno program Outlook i na stronie internetowej, zastosowanie:
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();
}
I realizacja DateTime.FromUtc()
:
public static DateTime FromUTC(this DateTime value)
{
var local = TimeZoneInfo.Local;
return TimeZoneInfo.ConvertTime(value, TimeZoneInfo.Utc, local);
}
miałem ten sam wynik z DateTime.ToLocalTime()
. Masz pomysł?
EDIT 1:
ten sposób początek i koniec zostanie wyświetlony na stronie internetowej (koniec z End
zamiast 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"
};
A rozgrywki:
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
zwraca sformatowany łańcuch DateTime:
return String.Format(WholeTime == true ? "{0:d}" : @"{0:dd.MM.yyyy HH:mm \U\T\Czzz}", Time);
Jaki jest kod używany do wyświetlania czasu na swojej stronie internetowej? – Romoku
@Romoku dodaje kod – Herdo
Zgaduję, że właściwość [Kind] (http://msdn.microsoft.com/en-us/library/system.datetime.kind.aspx) różni się między tymi dwoma. – Greg