2013-03-25 139 views
1

我想将VBScript转换为Javascript,使用jQuery来比较服务器时间和当前时间。使用jQuery比较服务器时间和当前时间

If Not IsDate(frmLogDetail.hidServerTime.value) Then 
frmLogDetail.hidServerTime.value = Now 
End If 
frmLogDetail.hidTimeOffset.value = DateDiff("s", Time, TimeValue(frmLogDetail.hidServerTime.value)) 

这是我有:

var hdServerTime = $("#hidServerTime"); 

if (!IsDate(hdServerTime)) { 
    hdServerTime.val(new Date()); 
    alert(hdServerTime.val()); 
} 

var dateSelected = $("#hidServerTime").val(); 
var hdTimeOffset = $("#hidTimeOffset").val(); 
hdTimeOffset = DateDiff(Date.now, new Date(dateSelected)); 

function DateDiff(first, second) { 
      return (second - first)/(1000 * 60 * 60 * 24) 
     } 
+0

的jQuery不会奇迹般地做的一切。你需要真正做一些思考。 – 2013-03-25 20:58:58

+0

查看http://www.datejs.com/ – 2013-03-25 20:59:22

+0

你可能想*调用Date.now(),而不是将它作为函数传递 – Bergi 2013-03-25 21:29:43

回答

0

JavaScript是一种客户端脚本语言,因此你将不能访问服务器时,除非你的服务器端脚本,如PHP支持。 Date.now()将为您提供自1970年1月1日00:00:00 UTC起的客户端时间,以毫秒为单位。

我发现你的代码令人困惑(我假设你正在做一个PHP实现?隐藏的div/span?),所以我只想回答我将要做的事情。

获取服务器端时间的一种方法是使用PHP为页面提供服务,并在实际运行Javascript客户端之前在全局中定义JavaScript变量。你会在你的页面的<head>标签做这样的事情(例如):

<?php 
    echo "<script type='text/javascript'> 
     var servertime = ".time()."; 
     </script>" 
?> 

然后在Javascript中,你将有可变servertime像这样的东西来比较:

//Get time difference in milliseconds 
var timeDifference = Date.now() - servertime; 

此实现是很好的,因为你根本不需要jQuery,而且你没有处理一些隐藏在页面上的元素的SEO问题等等......

0
var hdTimeOffset = $("#hidTimeOffset").val(); 
hdTimeOffset = …; 

这不是你如何为jQuery分配值。此代码只是分配给变量hdTimeOffset,这不是对DOM的一些魔术参考。相反,使用

var hdTimeOffset = …; 
$("#hidTimeOffset").val(hdTimeOffset); 

(见docs for jQuery .val()