1

jQueryを使用してサーバー時刻と現在時刻を比較し、VBScriptをJavascriptに変換しようとしています。

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

JavaScript はクライアント側のスクリプト言語であるため、PHP などのサーバー側のスクリプトでサポートしない限り、サーバー時間にアクセスすることはできません。 Date.now()1970 年 1 月 1 日 00:00:00 UTC からのクライアント側の時間をミリ秒単位で返します。

私はあなたのコードが紛らわしいと思います (私はあなたが PHP の実装を行っていると思いますか? 隠し div/span ですか?) ので、私が何をするかで答えるつもりです。

サーバー側の時間を取得する 1 つの方法は、実際に Javascript クライアント側を実行する前に、PHP を使用してページを提供し、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 に答える
0
var hdTimeOffset = $("#hidTimeOffset").val();
hdTimeOffset = …;

これは、jQuery で値を割り当てる方法ではありません。このコードは変数hdTimeOffsetに代入するだけで、DOM への魔法のような参照ではありません。代わりに、

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

( jQuery のドキュメントを.val()参照)

于 2013-03-25T21:27:37.453 に答える