0

以下のような非常に単純なJavaScript時計があります

        <script>
        function startTime() {
            var today = new Date();
        var h = today.getHours();
        var m = today.getMinutes();
        var s = today.getSeconds();
        // add a zero in front of numbers<10
        m = checkTime(m);
        s = checkTime(s);
        document.getElementById('clockSpan').innerHTML = h + ":" + m + ":" + s;
        t = setTimeout(function () { startTime() }, 500);
    }

    function checkTime(i) {
        if (i < 10) {
            i = "0" + i;
        }
        return i;
    }
</script>

ただし、ブラウザの時間設定を使用します。代わりに、サーバー時間を使用したいと思います。

どうすればこのようなことができますか?

      var today = new Date(<%=DateTime.UtcNow%>);

このようなエラーが発生します

ここに画像の説明を入力

asp.net 4.5

4

2 に答える 2

2

あなたのコードには文字列の前後に区切り文字がありませんが、それはサーバーが生成する日付形式がブラウザによって理解されることに依存します。代わりに、1970-01-01 からのミリ秒数を計算し、Dateそれを値として受け取るコンストラクターを使用します。

var today = new Date(<%=(int)DateTime.UtcNow.Subtract(new DateTime(1970,1,1)).TotalMilliseconds%>);

ただし、サーバーの日付とブラウザーの日付の両方を使用するようにコードを書き直す必要があります。そのコードを使用して、ページの読み込み時間のみを取得できます。関数を実行するたびに同じ時間が表示されるため、サーバー時間を一度変数に取得し、ページがブラウザーに読み込まれるとすぐにブラウザー時間を取得して、差を取得する必要があります。それから、後でブラウザ時間からサーバー時間を計算できます。

于 2013-08-31T14:13:35.527 に答える
1

JavaScriptを使用しているため、事前に構築されたメソッドを使用してサーバーからデータを取得することは不可能です。代わりに、特定のサーバーから時間を探している場合は、何らかの形式のAJAXを作成する必要があります(おそらくasp.net AJAXで判断するタグ) PHP (またはその他の) スクリプトを呼び出して、Date オブジェクトの作成に使用できる時間を返します。

于 2013-08-31T13:58:12.673 に答える