Tengo una página web escrita en ASP.NET y necesito recuperar la hora local del usuario final en Page_Load
. Pensé en usar Javascript para obtener la hora local (usando new Date()
), pero el problema es que la secuencia de comandos se ejecuta después de los eventos del servidor.Cómo obtener la hora local del usuario en Page_Load
¿Alguna idea sobre cómo lograr esto?
EDITAR: Mi página es bastante compleja: muestra un gráfico con muchos campos calculados de una base de datos, listas de selección de objetos/campos, etc. El cliente ahora solicitó que considere la zona horaria del usuario y que la zona horaria sea determinada automáticamente por la página web. La fecha del usuario es importante para determinar el intervalo del gráfico (en qué día mostrar los datos). La carga de datos (ya que es muy complicado) se realiza tanto en Page_Load
como en Page_PreRender
. Renunciar a estos eventos requeriría una nueva página de reescritura.
SOLUCIÓN FINAL INSPIRADO POR RESPUESTA: Así es como resolví el problema finalmente. Estoy guardando la fecha local en una cookie. Este es el método que establece la cookie:
function SetLocalDateCookie() {
var cookieName = 'LOCALDATE';
var localDate = new Date();
var realMonth = localDate.getMonth() + 1;
var localDateString = localDate.getFullYear() + "/" + realMonth + "/" + localDate.getDate();
setCookie(cookieName, localDateString, 2);
try {
var exdate = new Date();
exdate.setDate(exdate.getDate() + 2);
document.cookie = cookieName + "=" + escape(localDateString) + ";expires=" + exdate.toGMTString();
}
catch (e)
{ }
}
En mi página maestra que llamo este método en $(document).ready
. En la página donde utilizo esta cookie he añadido el código siguiente para Page_Init
:
if (string.IsNullOrEmpty(CookieHandler.Instance.GetCookie(CookieKeys.LocalDate)))
{
Response.ClearContent();
Response.Write(@"<form id='local' method='post' name='local'>
<script type='text/javascript'>
SetLocalDateCookie();
document.getElementById('local').submit();
</script>
</form>");
Response.Flush();
Response.End();
}
Entonces puede simplemente utilizar el valor de la cookie en el código C#. ¡Gracias por sus respuestas/comentarios!
¿Desea conocer la hora local del usuario antes de que se hayan ejecutado los eventos del servidor? – Curt
Algo así ... sí: | –
También pensé en usar una cookie ... pero su valor necesitaría ser constantemente actualizado (tiene que contener una fecha y hora); ¿Qué sucede la primera vez que se carga la página y la cookie no está configurada? –