java中如何获取时区?

 我来答
qt87v5
推荐于2018-10-22 · TA获得超过335个赞
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:205万
展开全部
//我实现一个时钟窗口程序给你了,好让你更容易理解,希望对你有帮助。
import java.awt.*;
import java.awt.event.*;
import java.util.*;

//世界时钟
public class TimerTest {
public static void main(String[] args) {
new TimerTestFrame("世界时钟");
}
}

class TimerTestFrame extends Frame {
/**
*
*/
private static final long serialVersionUID = 1L;

public TimerTestFrame(String s) {
super(s);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
setLayout(new GridLayout(2, 6));

ClockCanvas clk1 = new ClockCanvas("北京", "GMT+8"); // 创建时钟
ClockCanvas clk2 = new ClockCanvas("巴黎", "GMT+2");
ClockCanvas clk3 = new ClockCanvas("华盛顿", "GMT-4");
ClockCanvas clk4 = new ClockCanvas("洛衫矶", "GMT-7");
ClockCanvas clk5 = new ClockCanvas("伦敦", "GMT+1");
ClockCanvas clk6 = new ClockCanvas("芝加哥", "GMT-5");
add(clk1);
add(clk2);
add(clk3);
add(clk4);
add(clk5);
add(clk6);
setSize(500, 350); // 设置框架宽高
setVisible(true);
}
}

class ClockCanvas extends Canvas implements Runnable {
/**
*
*/
private static final long serialVersionUID = 1L;

private int seconds = 0;

private String city;

private GregorianCalendar calendar;

Thread t;

public ClockCanvas(String c, String tz) {
city = c;
//也可以通过TimeZone.setTimeZone(String n)函数改变时区,n为时区参数名。
calendar = new GregorianCalendar(TimeZone.getTimeZone(tz));
t = new Thread(this);
t.start();
setSize(125, 125); // 设置画布大小
setBackground(Color.black);
}

// 重写父类的方法绘制时钟图形
public void paint(Graphics g) {
Graphics2Dg2d = (Graphics2D) g;
BasicStroke bstroke = new BasicStroke(2.0f);
g2d.setStroke(bstroke);
g2d.setColor(Color.green);
g2d.drawOval(0, 0, 100, 100);
bstroke = new BasicStroke(5.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 0, 50, 5);
g2d.drawLine(0, 50, 5, 50);
g2d.drawLine(50, 95, 50, 98);
g2d.drawLine(95, 50, 98, 50);
double hourAngle = 2 * Math.PI * (seconds - 3 * 60 * 60)
/ (12 * 60 * 60);
double minuteAngle = 2 * Math.PI * (seconds - 15 * 60) / (60 * 60);
double secondAngle = 2 * Math.PI * (seconds - 15) / (60);
bstroke = new BasicStroke(5.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 50, 50 + (int) (30 * Math.cos(hourAngle)),
50 + (int) (30 * Math.sin(hourAngle)));
bstroke = new BasicStroke(3.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 50, 50 + (int) (40 * Math.cos(minuteAngle)),
50 + (int) (40 * Math.sin(minuteAngle)));
bstroke = new BasicStroke(1.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 50, 50 + (int) (45 * Math.cos(secondAngle)),
50 + (int) (45 * Math.sin(secondAngle)));
g2d.setColor(Color.red);
g2d.drawString(city, 35, 115);
}

public void timeElapsed() {
//new Date()()获得当前时间
System.out.println(new Date()());
calendar.setTime(new Date()());
seconds = calendar.get(Calendar.HOUR) * 60 * 60
+ calendar.get(Calendar.MINUTE) * 60
+ calendar.get(Calendar.SECOND);
}

public void run() {
try {
while (true) {
Thread.sleep(300);
timeElapsed();
repaint();
}
} catch (InterruptedException e) {
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式