【发布时间】:2011-05-03 09:37:10
【问题描述】:
大家! 我正在解决我的 ASP.NET MVC 项目中的下一个问题:
问题:需要计算客户端 DateTime 和服务器 DateTime 之间的差异。 我有 javascript 函数,它使用 timeStamp 参数 = getNow() 对服务器(DateController)进行 Ajax 查询,其代码如下。
getNow: function() {
var date = new Date();
return (date.getTime() + (date.getTimezoneOffset() * 60000));
}
接下来,在服务器端我有 DateController,我需要在其中计算 dateTime 差异(以毫秒为单位):
....
var clientMs = long.Parse(Request.QueryString["t"]);
var dt1970 = new DateTime(1970, 1, 1, 0, 0, 0);
var msFrom1970 = (DateTime.Now - dt1970).TotalMilliseconds
+(DateTime.UtcNow - DateTime.Now).TotalMilliseconds;
var timeOffset = msFrom1970 -clientMs;
return new JsonResult
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new { responseText = timeOffset.ToString()
};
}
但是 timeOffset 计算错误。我尝试在小型控制台应用程序中检查此逻辑:
class Program
{
static void Main(string[] args)
{
var clientMs = 1304411645875;
//value of clientMs I get from javaScript by using page
//http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_gettime
//with this script
/*
<HTML>
<body>
<script type="text/javascript">
var d=new Date();
document.write(d.getTime());
</script>
</body>
</HTML>
*/
var dt1970 = new DateTime(1970, 1, 1, 0, 0, 0);
var msFrom1970 = (DateTime.Now - dt1970).TotalMilliseconds
+(DateTime.UtcNow - DateTime.Now).TotalMilliseconds;
Console.WriteLine( msFrom1970);
Console.ReadLine();
}
}
相差大约几个小时。 谁能告诉我我的错误或问题是由其他原因引起的吗?
【问题讨论】:
-
是的。抱歉拼写错误,我更正了。
标签: javascript asp.net-mvc datetime timezone utc