关于时钟的javascript和java

标签 java javascript

我有一个关于javascipt日期的问题,我按照w3school中的示例获取时钟,它会自动刷新,它工作正常,但它显示我本地的当前时间,这是我不想要的。

相反,我希望它显示我的服务器时间,因为该程序将在我的服务器中运行,因此如果我输入以下内容,则在 java 中:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.format(new java.util.Date())

它实际上会获取服务器时间。我想知道为什么下面的代码会得到我的区域设置时间(我的电脑时间,而不是我的服务器时间),即使我更改为 var t = d.toString();

var myVar = setInterval(function(){ myTimer() }, 1000);

function myTimer() {
    var d = new Date();
    var t = d.toLocaleString();
    document.getElementById("demo").innerHTML = t;
}

最佳答案

I wonder why the following code will get my locale time(my pc time, not my server time) even i change to var t = d.toString()

因为d仍然是客户端 JavaScript Date对象,以及两者toLocaleStringtoString返回客户端时区的时间。

如果您想显示服务器的时间,您需要确定客户端时区和服务器时区之间的差异,然后应用该差异。一种相当精确但并不完美的方法是让服务器端代码输出 JavaScript 代码,该代码返回从服务器发送页面时的服务器时间:

<script>
<% // Server-side code
    Calendar serverDate = Calendar.getInstance();
%>
var d = new Date(
    <%=serverDate.get(Calendar.YEAR)%>,
    <%=serverDate.get(Calendar.MONTH)%>,
    <%=serverDate.get(Calendar.DAY_OF_MONTH)%>,
    <%=serverDate.get(Calendar.HOUR_OF_DAY)%>,
    <%=serverDate.get(Calendar.MINUTE)%>,
    <%=serverDate.get(Calendar.SECOND)%>
);
var delta = d.getTime() - Date.now();
</script>

请注意如何使用 JSP 将数字输出到 JavaScript 代码。浏览器会看到类似这样的内容:

<script>
<% // Server-side code
    Calendar serverDate = Calendar.getInstance();
%>
var d = new Date(
    2014,
    11,
    23,
    9,
    54,
    27
);
var delta = d.getTime() - Date.now();
</script>

(请注意,我假设上面是公历或儒略历;如果是这样, Calendar 的月份字段将为 0 = 一月,这正是 JavaScript 所期望的。)

结果delta是服务器时间和客户端时间之间的差异(以毫秒为单位),这意味着您可以随时在客户端上执行此操作以显示服务器时间:

var d  = new Date(Date.now() - delta);

认为我的做法是正确的。 :-) 如果没有,那就是+ delta .

关于关于时钟的javascript和java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27617349/

相关文章:

java - 在 swing 消息框中启用文本突出显示

javascript - Vue js,缺少从 HTML 到相关 JS 的映射

javascript - MS edge 上奇怪的 css 转换动画

java - 使用 datetime 而不是 datetime2 sqlserver hibernate

java - android SQLITE 数据库应用程序在运行 getAllComments() 方法时在创建时崩溃

java - java中的多边形 "contains"函数不起作用

javascript - Webdriver.io 因 NoSessionIdError 崩溃

javascript - jQuery 修复了在滚动时缩小到较小尺寸的导航栏是 super 马车

javascript - 使用 WT(Witty) 的 Javascript 函数。

javascript - 在html中更改占位符字体颜色