2013-03-25 63 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()