【问题标题】:Use jQuery to compare server time and current time使用jQuery比较服务器时间和当前时间
【发布时间】:2013-03-25 20:57:15
【问题描述】:

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

【问题讨论】:

  • jQuery 并不能神奇地做所有事情。你将需要真正做一些思考。
  • 查看datejs.com
  • 您可能想调用 Date.now(),而不是将其作为函数传递

标签: javascript jquery vbscript


【解决方案1】:

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 问题,比如在页面上隐藏元素等......

【讨论】:

    【解决方案2】:
    var hdTimeOffset = $("#hidTimeOffset").val();
    hdTimeOffset = …;
    

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

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

    (见docs for jQuery .val()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多