直到今天,我一直在使用DateTime.Now;功能来节省用户的时间和数据。好吧,在以后的阶段中,我使用JavaScript来获取客户端的日期和时间以维护时区。但是,当我更改系统的日期和时间并尝试使用JavaScript时。它显示了我的计算机的更改时间。我需要如何使客户正确的当前日期和时间值。如何获得它。

请不要超过C#和JavaScript。

最佳答案

在客户端上,当客户端使用javascript发送请求时,获取新的Date()。toJSON()值并将其发送到服务器。 toJSON()返回格林尼治标准时间+0000时区(格林威治)的当前客户端日期时间:

var dtStr=new Date().toJSON();


在服务器上,在C#中:

DateTime dtServer=DateTime.Now;
DateTime dtClient=DateTime.Parse(Request.QueryString["dtStr"]); // Or Request.Form
double requestTimeDelta=10f; // max time in seconds between client starts the request,
                             // and this code lines is executed.
double secondsDelta=2f;
DateTime max=dtClient.AddSeconds(requestTimeDelta+secondsDelta);
DateTime min=dtClient.AddSeconds(-secondsDelta);
if (max>=dtServer && min<=dtServer) {
  // time is correct
}
else
{
  // time is incorrect
}


需要上面的代码,客户端和服务器上的时间已与全局时钟(例如Internet时间源服务器)同步。为避免此问题,您可以计算并保存(例如,在Session中)客户端和服务器时钟之间的初始(在第一个请求中)初始差异,并将此“差异”添加到maxmin变量中。此行为只是为了编码,而没有在上面的代码中显示。

关于c# - 在C#中检索确切的客户时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7280107/

10-09 20:16
查看更多