2010-11-01 29 views
5

Tengo un sitio donde los usuarios pueden realizar publicaciones. Los usuarios pueden ser de todo el mundo, así que cuando publican, estoy almacenando la fecha publicada como DateTime.UtcNow. Estoy usando el plugin JQuery hace tiempo para mostrar el dat publicado similar al desbordamiento de pila (1 minuto atrás, etc.). Pero no estoy seguro de cómo convertir a la fecha que he almacenado en el sistema a la hora local del usuario. Aquí es lo que estoy utilizando:C# UTC a los usuarios Hora local

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()); 
    } 

Este se encarga de convertir el tiempo a la hora local, los servidores, pero lo necesito para el usuario, hora local. ¿Qué estoy haciendo mal? Estoy usando .NET MVC 2 y .NET 4.0

Respuesta

10

En general, no va a saber la zona horaria exacta del usuario en el lado del servidor. En lugar de intentar convertir la hora local del usuario en el lado del servidor, envíe la hora al cliente en UTC y haga que el cliente convierta la hora. El plug-in TimeAgo lo hace automáticamente, siempre y cuando usted le da la hora en formato ISO8601 completo:

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

la Z al final de la marca de tiempo es importante; eso significa UTC.

+0

¡Gracias por la ayuda! Estoy usando AJAX para publicar y me preguntaba si TimeAgo funciona con .Live? – Paul

+8

hecho interesante: la Z al final es lo que le da su nombre común, "tiempo zulú" :) – MattDavey

Cuestiones relacionadas