ho una soluzione di tre progetti:Conversione UTC in ora locale restituisce strano risultato
- Nucleo
- Outlook Add-In
- ASP.NET Sito
Entrambi, l'Outlook Il componente aggiuntivo e il sito Web utilizzano gli stessi metodi del progetto principale per ottenere dati da SQL Server. Quando scrivo i miei dati nel database, posso convertire tutti i DateTime
valori di due tabelle in tempo UTC:
POLL_START POLL_END
2013-07-31 12:00:00.000 2013-08-01 12:00:00.000
e
PICK_DATE
2013-07-31 12:00:48.000
2013-07-31 13:00:12.000
Quando ottengo i dati nel mio Outlook Add-In, questo è il risultato corretto:
Quando si apre lo stesso nel mio sito, le scelte vanno bene:
Ma il mio inizio e di fine sono "spezzato" - l'offset viene aggiunto, Bute le ore sbagliate vengono utilizzati:
Ecco il codice per la mia conversione, che entrambi, Outlook e il sito web, l'uso:
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();
}
E l'attuazione di DateTime.FromUtc()
:
public static DateTime FromUTC(this DateTime value)
{
var local = TimeZoneInfo.Local;
return TimeZoneInfo.ConvertTime(value, TimeZoneInfo.Utc, local);
}
Ho avuto lo stesso risultato con DateTime.ToLocalTime()
. Qualcuno un'idea?
EDIT 1:
Questo è come l'inizio e la fine ottiene visualizzati sul sito web (end con End
invece di 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"
};
E i picconi:
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
restituisce la stringa DateTime formata:
return String.Format(WholeTime == true ? "{0:d}" : @"{0:dd.MM.yyyy HH:mm \U\T\Czzz}", Time);
Qual è il codice che stai utilizzando per visualizzare l'ora sulla tua pagina web? – Romoku
@Romoku ha aggiunto il codice – Herdo
Ho intenzione di indovinare che la proprietà [Tipo] (http://msdn.microsoft.com/en-us/library/system.datetime.kind.aspx) è diversa tra i due. – Greg