
在Java中,如何获取不同时区的当前时间你知道这道题的正确答案应该如何回答吗背后的原理又是什么呢然后,紧接着,我又提出了以下问题:为什么以下代码无法得到美国时间。
(在东八区的计算机上)接下来,java课程培训机构>
然后,紧接着,我又提出了以下问题:
为什么以下代码无法得到美国时间。(在东八区的计算机上)
接下来,java课程培训机构就围绕这两个问题,来带领读者一起学习一下哪些和Java中的时间有关的概念。
时区
前面提到了时区,可能很多读者不知道什么是时区,先来简单介绍一下。
时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。1863年,首次使用时区的概念。时区通过设立一个区域的标准时间部分地解决了这个问题。
世界各个国家位于地球不同位置上,因此不同国家,特别是东西跨度大的国家日出、日落时间必定有所偏差。这些偏差就是所谓的时差。
为了照顾到各地区的使用方便,又使其他地方的人容易将本地的时间换算到别的地方时间上去。有关国际会议决定将地球表面按经线从东到西,划成一个个区域,并且规定相邻区域的时间相差1小时。在同一区域内的东端和西端的人看到太阳升起的时间最多相差不过1小时。当人们跨过一个区域,就将自己的时钟校正1小时(向西减1小时,向东加1小时)
接下来,本文就围绕这两个问题,来带领读者一起学习一下哪些和Java中的时间有关的概念。
时区
前面提到了时区,可能很多读者不知道什么是时区,先来简单介绍一下。
时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。1863年,首次使用时区的概念。时区通过设立一个区域的标准时间部分地解决了这个问题。
世界各个国家位于地球不同位置上,因此不同国家,特别是东西跨度大的国家日出、日落时间必定有所偏差。这些偏差就是所谓的时差。
为了照顾到各地区的使用方便,又使其他地方的人容易将本地的时间换算到别的地方时间上去。有关国际会议决定将地球表面按经线从东到西,划成一个个区域,并且规定相邻区域的时间相差1小时。在同一区域内的东端和西端的人看到太阳升起的时间最多相差不过1小时。当人们跨过一个区域,就将自己的时钟校正1小时(向西减1小时,向东加1小时
//我实现一个时钟窗口程序给你了,好让你更容易理解,希望对你有帮助。 import javaawt; import javaawtevent; import javautil; //世界时钟 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(); Systemexit(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; //也可以通过TimeZonesetTimeZone(String n)函数改变时区,n为时区参数名。 calendar = new GregorianCalendar(TimeZonegetTimeZone(tz)); t = new Thread(this); tstart(); setSize(125, 125); // 设置画布大小 setBackground(Colorblack); } // 重写父类的方法绘制时钟图形 public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; BasicStroke bstroke = new BasicStroke(20f); g2dsetStroke(bstroke); g2dsetColor(Colorgreen); g2ddrawOval(0, 0, 100, 100); bstroke = new BasicStroke(50f); g2dsetStroke(bstroke); g2ddrawLine(50, 0, 50, 5); g2ddrawLine(0, 50, 5, 50); g2ddrawLine(50, 95, 50, 98); g2ddrawLine(95, 50, 98, 50); double hourAngle = 2 MathPI (seconds - 3 60 60) / (12 60 60); double minuteAngle = 2 MathPI (seconds - 15 60) / (60 60); double secondAngle = 2 MathPI (seconds - 15) / (60); bstroke = new BasicStroke(50f); g2dsetStroke(bstroke); g2ddrawLine(50, 50, 50 + (int) (30 Mathcos(hourAngle)), 50 + (int) (30 Mathsin(hourAngle))); bstroke = new BasicStroke(30f); g2dsetStroke(bstroke); g2ddrawLine(50, 50, 50 + (int) (40 Mathcos(minuteAngle)), 50 + (int) (40 Mathsin(minuteAngle))); bstroke = new BasicStroke(10f); g2dsetStroke(bstroke); g2ddrawLine(50, 50, 50 + (int) (45 Mathcos(secondAngle)), 50 + (int) (45 Mathsin(secondAngle))); g2dsetColor(Colorred); g2ddrawString(city, 35, 115); } public void timeElapsed() { //new Date()获得当前时间 Systemoutprintln(new Date()); calendarsetTime(new Date()); seconds = calendarget(CalendarHOUR) 60 60 + calendarget(CalendarMINUTE) 60 + calendarget(CalendarSECOND); } public void run() { try { while (true) { Threadsleep(300); timeElapsed(); repaint(); } } catch (InterruptedException e) { } } }
这是标准的XML Schema的"日期型数据格式”
T是代表后面跟着“时间”。Z代表0时区,或者叫UTC统一时间。
国内常见于MS Office Excel电子表格XML中的时间格式。
Java用SimpleTimeFormat可以随意处理这样的时间文本
思路:
通过经纬度获取当地时区(百度有现成的例子)
获取你电脑当前的时间
时间原则上是每隔一个时区相差一个小时,所以你可以根据你的时间加上或者减去时区去算出经纬度所在地的实时时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssSS:SZ");
Date date = sdfparse(time);
这样不行的话,你就把最后一:替换成没有就行吧
package comwebkfatest;//>
以上就是关于北大青鸟java培训:Java中的时间处理全部的内容,包括:北大青鸟java培训:Java中的时间处理、Java中的时间处理、关于JAVA时间格式转换问题,涉及时区等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)