2010-11-01 18 views
5

Ho un sito in cui gli utenti possono creare post. Gli utenti possono provenire da tutto il mondo, quindi quando pubblicano, sto memorizzando la data pubblicata come DateTime.UtcNow. Sto usando il plug-in JQuery tempo fa per mostrare i dati inviati simili allo stack overflow (1 minuto fa ecc ...) Ma non sono sicuro di come convertire la data che ho archiviato nel sistema all'ora locale dell'utente? Ecco quello che sto usando:C# UTC per gli utenti ora locale

public static MvcHtmlString ConvertToLocalTime(this HtmlHelper htmlHelper, DateTime date) 
    { 
     DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(date.ToString()),DateTimeKind.Utc); 
     return MvcHtmlString.Create(convertedDate.ToLocalTime().ToString()); 
    } 

Questo vede per convertire il tempo per l'ora locale server, ma ho bisogno per l'ora locale degli utenti. Che cosa sto facendo di sbagliato? Sto usando .NET MVC 2 e .NET 4.0

risposta

10

In generale, non si conosce il fuso orario dell'utente sul lato server. Invece di provare a convertire l'ora locale dell'utente sul lato server, inviare l'ora al client in UTC e fare in modo che il client converta l'ora. Il plugin TimeAgo fa automaticamente il tempo che si dà il tempo in formato ISO8601 piena:

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr> 

Il Z alla fine del timestamp è importante; ciò significa UTC.

+0

Grazie per l'aiuto! Sto usando AJAX per postare e mi chiedevo se TimeAgo funziona con .Live? – Paul

+8

fatto interessante - la Z alla fine è ciò che dà il suo nome comune, "Zulu time" :) – MattDavey

Problemi correlati