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