¿Cómo obtener la fecha y hora del cliente en ASP.NET?

Cuando uso DateTime.Now obtengo la fecha y la hora desde el punto de vista del servidor. ¿Hay alguna forma de obtener la fecha y hora del cliente en ASP.NET?

Lo que haría sería crear un campo de entrada oculto y luego conectar una rutina de Javascript al evento onsubmit para el formulario. Esta rutina llenaría el campo oculto con la hora en la máquina del cliente.

El campo oculto se puede usar con ASP.NET utilizando la clase de control HTML “HtmlInputHidden”. Simplemente le da control de entrada un atributo runat = “server” como cualquier otro control del lado del servidor.

El servidor puede leer esta vez cuando el formulario se publique. Incluso podría incluir esto en un control de servidor si necesita hacer esto en varios lugares.

Alternativamente, puede hacer esto con AJAX, pero la implementación dependerá de la biblioteca que use.

Me gusta la idea de utilizar el tiempo del navegador / sistema y la zona horaria o permitirles seleccionar su zona horaria. En un proyecto anterior utilicé algo como esto:

  

Y luego en el servidor:

 ///  /// Returns the client (if available in cookie) or server timezone. ///  public static int GetTimeZoneOffset(HttpRequest Request) { // Default to the server time zone TimeZone tz = TimeZone.CurrentTimeZone; TimeSpan ts = tz.GetUtcOffset(DateTime.Now); int result = (int) ts.TotalMinutes; // Then check for client time zone (minutes) in a cookie HttpCookie cookie = Request.Cookies["ClientTimeZone"]; if (cookie != null) { int clientTimeZone; if (Int32.TryParse(cookie.Value, out clientTimeZone)) result = clientTimeZone; } return result; } 

O puede pasarlo como un parámetro de URL y manejarlo en Page_Load:

 http://host/page.aspx?tz=-360 

Solo recuerda usar minutos, ya que no todas las zonas horarias son horas completas.

si mantiene un perfil de usuario, puede pedirles que le digan su zona horaria y luego hacer los cálculos necesarios.

La alternativa es geolocalizar al usuario según su dirección IP. O geolocalizar si el navegador tiene esta capacidad (próximamente para Firefox). Una vez que tenga la ubicación del usuario, puede buscar la zona horaria.

La solución javascript es probablemente una buena y fácil.

Es posible que el cliente y el servidor no estén totalmente sincronizados, por lo que la pregunta es si desea tener la hora en la computadora cliente o si desea tener la hora en el servidor, pero ajustada para las diferencias de zona horaria. Javascript puede darle tiempo al cliente (incluida la zona horaria). También puede combinar la hora en el servidor con la zona horaria del cliente.

Sin embargo, nunca se puede obtener el tiempo con mayor precisión que la latitud de una solicitud.

Usé este método en ASP.Net con VB

 Dim strLanguage As String = Request.UserLanguages(0) Dim currentCulture As CultureInfo = CultureInfo.CreateSpecificCulture(strLanguage) Dim dateformat As String = currentCulture.DateTimeFormat.ShortDatePattern 

Esto producirá el formato de tiempo de datos de la computadora que mira los datos.