我想在run()方法中访问字符串变量,并在jsp屏幕上显示该值。请注意,run()方法中的字符串变量所保存的值每1秒更改一次,如下面的代码所示。因此我的要求是在屏幕上显示值并动态更改值。
(OR)
简单来说,我想要显示的是UTC时钟,它在JSP屏幕上每隔一秒更改一次。
public class Clock implements Runnable {
JLabel jb;
//Constructor takes the clock JLabel
public Clock(JLabel jb) {
this.jb = jb;
}
public void run() {
while (true) {
try {
//Thread sleeps & updates ever 1 second, so the clock changes every 1 second.
jb.setText(timeNow());
String dynaStr= timeNow();
Thread.sleep(1000);
} catch (InterruptedException ex) {
System.out.println(ex);
}
}
}
public String timeNow() {
Calendar c = Calendar.getInstance();
TimeZone z = c.getTimeZone();
int offset = z.getRawOffset();
if(z.inDaylightTime(new Date())){
offset = offset + z.getDSTSavings();
}
int offsetHrs = offset / 1000 / 60 / 60;
int offsetMins = offset / 1000 / 60 % 60;
System.out.println("offset: " + offsetHrs);
System.out.println("offset: " + offsetMins);
c.add(Calendar.HOUR_OF_DAY, (-offsetHrs));
c.add(Calendar.MINUTE, (-offsetMins));
System.out.println("GMT Time: "+c.getTime());
return c.getTime().toString();
}
}
答案 0 :(得分:3)
使用javascript而不是java。一个例子是:
var myVar=setInterval(function () {myTimer()}, 1000);
function myTimer() {
var date = new Date();
document.getElementById("demo").innerHTML = date.toISOString();
}
演示是你的div或用于显示的任何东西。
这是完整功能的代码,只需复制并粘贴到文本文档中,并将扩展名从txt更改为html或(jsp)。然后双击以在浏览器中运行。
<html>
<head>
<title></title>
<script type="text/javascript">
var myVar=setInterval(function () {myTimer()}, 1000);
var counter = 0;
function myTimer() {
var date = new Date();
document.getElementById("demo").innerHTML = date.toISOString();
}
</script>
</head>
<body>
<span id="demo"></span>
</body>
</html>
您也可以使用date.toUTCString()
,它会为您提供不同格式的相同内容。