当我使用DateTime.Now
时,我从服务器的角度得到日期和时间。有没有办法在ASP.NET中获取客户端日期和时间?如何在ASP.NET中获取客户端日期和时间?
回答
我会做的是创建一个隐藏的输入字段,然后将一个JavaScript例程连接到窗体的onsubmit事件。这个例程将在客户端机器上用时间填充隐藏字段。
隐藏字段可以通过使用HTML控件“HtmlInputHidden”类与ASP.NET一起使用。你只要给你输入控制一个runat =“服务器”属性就像任何其他服务器端控制。
然后,服务器可以在表单回传后这段时间内读出。如果你需要在很多地方这样做,你甚至可以把它包装在一个服务器控件中。
另外,你可以用AJAX做到这一点,但实现将取决于你使用的库。
而不是做所有这些,只需使用Javascript来设置一个cookie,存储浏览器时区。然后后端可以随时读取该cookie。 – 2014-05-14 22:05:47
Cookie存在的问题是人们旅行。 – 2018-02-21 15:38:56
如果你维护一个用户配置文件,你可以让他们告诉你他们的时区,然后做必要的计算。
另一种方法是根据他/她的IP地址对用户进行地理定位。或者,如果浏览器具有此功能(即将推出的Firefox),则会进行地理定位。一旦你有用户的位置,你可以查找时区。
JavaScript解决方案可能是一个很好的和容易的。
IP不一定会给出正确的答案。我有一个客户端使用单个站点进行所有网络连接(从一个站点到另一个站点的直接管道),因此所有这些客户端都来自CST IP,无论他们身在何处。 – 2008-11-08 16:26:15
Stephen:我们的业务是隐藏客户IP,因此VPN-in位于布拉格,代理服务器位于柏林。例如,客户是在莫斯科。 – abatishchev 2011-02-26 01:46:46
客户端和服务器可能不完全同步,所以问题是如果你想在客户端计算机上的时间,或者你想在服务器上的时间,但调整时区差异。 Javascript可以让你在客户端的时间(包括时区)。您还可以将服务器上的时间与客户端的时区组合在一起。
尽管如此,您永远无法获得比请求的正确性更高的精度。
我喜欢使用浏览器/系统时间和时区或让他们选择他们的时区的想法。在过去的项目中,我使用的是这样的:
<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;
}
或者你也可以在把它作为一个URL参数,并在Page_Load处理:
http://host/page.aspx?tz=-360
只记得使用分钟,因为并非所有的时区都是整小时。
我在ASP.Net使用这种方法用VB
Dim strLanguage As String = Request.UserLanguages(0)
Dim currentCulture As CultureInfo = CultureInfo.CreateSpecificCulture(strLanguage)
Dim dateformat As String = currentCulture.DateTimeFormat.ShortDatePattern
这将产生计算机的观察数据的数据时间格式。
- 1. 如何从asp.net中的TimeZone获取客户端本地日期?
- 2. 服务器日期时间和客户端日期时间
- 3. JSP客户端的日期和时间
- 4. 如何在客户端时区显示日期和时间
- 5. 客户端上的ASP.NET AJAX和日期时间格式
- 6. 如何在javascript和asp.net中获取客户端id值?
- 7. 在ASP.NET MVC中显示客户端时区中的日期时间
- 8. 显示日期/时间用户的时区 - 在客户端
- 9. 服务器和客户端之间的日期时间差异
- 10. 在c中获取日期和时间
- 11. 如何在c#中的应用程序的客户端获取远程服务器的日期和时间?
- 12. 如何在asp.net中获取服务器日期/时间
- 13. 在用户的时区获取用户的日期和时间
- 14. ASP.NET MVC自定义客户端日期验证,如何获取输入名称?
- 15. 如何根据用户客户端(灯)显示时间和日期
- 16. 如何在CodeIgniter中仅从日期时间获取日期?
- 17. 如何从日期时间在sql中获取日期
- 18. System.IO.IOException:客户端和服务器之间存在时间和/或日期差异
- 19. 客户端的日期,时间和机器名
- 20. 与客户端和服务器的时间/日期差异?
- 21. 如何在JavaScript中获取客户端代码中其他国家/地区的当前日期时间?
- 22. 如何在OAuth2中从MVC5获取客户端ID和客户端密钥?
- 23. 如何在php中获取客户端ip地址和端口?
- 24. 获取日期和时间在.NET
- 25. 如何在ASP.NET MVC中获取客户端的IP地址?
- 26. 如何在ASP.Net中获取客户端计算机标识符?
- 27. 如何在Crystal报表中打印客户端(浏览器)日期时间?
- 28. 如何在Laravel中添加日期和时间以获取DateTime?
- 29. 如何在WordPress中获取当前日期和时间?
- 30. 如何在php中获取当前日期和时间
JavaScript可能很糟糕,因为很多用户的时间设置不准确。另外,它可能会被某人滥用。您必须验证UTC的偏移量是否合理。 – hangy 2008-11-08 15:32:23