使用jQuery比较服务器时间和当前时间

时间:2013-03-25 20:57:15

标签: javascript jquery vbscript

我正在尝试将VBScript转换为Javascript,使用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)
        }

2 个答案:

答案 0 :(得分: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问题......

答案 1 :(得分:0)

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

这不是你用jQuery分配值的方式。此代码仅分配给变量hdTimeOffset,这不是对DOM的一些魔术引用。相反,使用

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

(见docs for jQuery .val()