如何在ASP.NET中获取客户端date和时间?

我认为这个问题说明了一切。 如果我使用DateTime.Now,那么我从服务器的angular度来看date和时间。 我听说过JavaScript解决scheme,但是我想知道是否有另一种解决scheme。

谢谢

我会做的是创build一个隐藏的input字段,然后将一个JavaScript例程连接到窗体的onsubmit事件。 这个例程将在客户端机器上用时间填充隐藏字段。

隐藏的字段可以通过使用HTML控件“HtmlInputHidden”类与ASP.NET一起使用。 你只要给你input控制runat =“服务器”属性像任何其他服务器端控制。

然后服务器可以在表单回传时读出这个时间。 如果你需要在很多地方做这个,你甚至可以把它包装在一个服务器控件中。

另外,你可以用AJAX做这个,但是实现将取决于你使用的库。

我喜欢使用浏览器/系统时间和时区或让他们select他们的时区的想法。 在过去的项目中,我使用了这样的东西:

<script language="javascript"> function checkClientTimeZone() { // Set the client time zone var dt = new Date(); SetCookieCrumb("ClientDateTime", dt.toString()); var tz = -dt.getTimezoneOffset(); SetCookieCrumb("ClientTimeZone", tz.toString()); // Expire in one year dt.setYear(dt.getYear() + 1); SetCookieCrumb("expires", dt.toUTCString()); } // Attach to the document onload event checkClientTimeZone(); </script> 

然后在服务器上:

 /// <summary> /// Returns the client (if available in cookie) or server timezone. /// </summary> 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; } 

或者,您可以将其作为URLparameter passing并在Page_Load中处理:

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

只记得使用分钟,因为不是所有的时区都是整个小时。

如果你维护一个用户档案,你可以让他们告诉你他们的时区,然后做必要的计算。

另一种方法是根据他/她的IP地址对用户进行地理定位。 或者,如果浏览器具有此function(即将推出Firefox),则可以进行地理定位。 一旦你有用户的位置,你可以查找时区。

JavaScript的解决scheme可能是一个很好,很容易。

客户端和服务器可能不完全同步,所以问题是如果你想在客户端计算机上的时间,或者你想在服务器上的时间,但调整时区差异。 Javascript可以让你在客户端(包括时区)的时间。 您还可以将服务器上的时间与客户端的时区组合在一起。

尽pipe如此,你永远无法获得比请求的精度要高的精度。

我在VB中使用ASP.Net中的这个方法

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

这将产生查看数据的计算机的数据时间格式。