1

我正在尝试将 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)
        }
4

2 回答 2

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

这不是您使用 jQuery 分配值的方式。这段代码只是分配给变量hdTimeOffset,这不是对 DOM 的魔法引用。相反,使用

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

(请参阅jQuery 文档.val()

于 2013-03-25T21:27:37.453 回答
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 问题......

于 2013-03-25T21:25:55.613 回答