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 回答