实现时间的代码如下:
private int minute = 0, hour = 0,second = 0;
private String strminute, strhour, strsecond;
/** *//**
* 画时间-
* @param focusTemp
* @param gr
*/
public void drawTime(Graphics gr) {
Calendar cal = Calendar.getInstance();
second =cal.get(Calendar.SECOND);
minute = cal.get(Calendar.MINUTE);
hour = cal.get(Calendar.HOUR_OF_DAY);
strsecond = Integer.toString(second);
strminute = Integer.toString(minute);
strhour = Integer.toString(hour);
if(second<10)
strsecond="0"+strsecond;
if(minute<10)
strminute="0"+strminute;
if(hour<10)
strhour="0"+strhour;
Font aa=gr.getFont();
gr.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
gr.setColor(0xFFD700);
gr.drawString(strhour + ":" + strminute , SCREEN_WIDTH-50, 6, 0);
gr.setFont(aa);
}
一般情况下,使用这些就足够了。
如果更深一步探索,需要对时区控制的话,见下面:
1.这样获取的时间,无论电脑上调试时还是在真机上,显示的都是一样的
TimeZone china=TimeZone.getTimeZone("GMT+08:00");
Calendar cal1 = Calendar.getInstance(china);
int second =cal1.get(Calendar.SECOND);
int minute = cal1.get(Calendar.MINUTE);
int hour = cal1.get(Calendar.HOUR_OF_DAY);
String strsecond = Integer.toString(second);
String strminute = Integer.toString(minute);
String strhour = Integer.toString(hour);
System.out.println("北京时间 "+strhour + ":" + strminute +":"+strsecond);//GMT+08:00
TimeZone就是对时区的控制,
在Eclipse开发时,如果不设置时区的话,用Calendar获取的时间是默认的格林威治标准时间
在Eclipse开发时,如果设置时区的话, 用Calendar获取的时间是设置的那个时区的时间
举例如下:
A>. 社区的设置
//获得实际手机使用区域的默认时区
TimeZone defaultZone = TimeZone.getDefault();
//获得默认时区对象的ID标识
System.out.println(defaultZone.getID());//UTC
//取得中国的时区
TimeZone china=TimeZone.getTimeZone("GMT+08:00");
System.out.println(china.getID());//GMT+08:00
B >. 时区不同,时间的不同
TimeZone china=TimeZone.getTimeZone("GMT+08:00");
System.out.println(china.getID());//GMT+08:00
prompt3=china.getID();
Calendar cal1 = Calendar.getInstance(china);
int second =cal1.get(Calendar.SECOND);
int minute = cal1.get(Calendar.MINUTE);
int hour = cal1.get(Calendar.HOUR_OF_DAY);
String strsecond = Integer.toString(second);
String strminute = Integer.toString(minute);
String strhour = Integer.toString(hour);
System.out.println("东八时区ID"+prompt3);//GMT+08:00
System.out.println("北京时间 "+strhour + ":" + strminute +":"+strsecond);//
TimeZone defatime =TimeZone.getDefault();
System.out.println(defatime.getID());//GMT+08:00
prompt4=defatime.getID();
Calendar cal2 = Calendar.getInstance(defatime);
second =cal2.get(Calendar.SECOND);
minute = cal2.get(Calendar.MINUTE);
hour = cal2.get(Calendar.HOUR_OF_DAY);
strsecond = Integer.toString(second);
strminute = Integer.toString(minute);
strhour = Integer.toString(hour);
System.out.println("默认时区ID"+prompt4);//UTC
System.out.println("默认时间 "+strhour + ":" + strminute +":"+strsecond);//
这两个时间,在手机上显示的是一样的,但是在Eclipse开发时,是相差8个小时的。
应用:
在电脑上的模拟器上,正因为时区id不同,可以作为简单的反模拟器使用的一个方法,只要时区id不同,就不然程序启动。
2.API中的使用方法:
3.TimeZone时区的扩展知识
java.util.TimeZone,
API简述:
TimeZone
表示时区偏移量,也可以计算夏令时。
通常,使用 getDefault
获取 TimeZone
,getDefault
基于程序运行所在的时区创建 TimeZone
。例如,对于在日本运行的程序,getDefault
基于日本标准时间创建 TimeZone
对象。
也可以用 getTimeZone
及时区 ID 获取 TimeZone
。例如美国太平洋时区的时区 ID 是 "America/Los_Angeles"。因此,可以使用下面语句获得美国太平洋时间 TimeZone
对象:
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
可以使用 getAvailableIDs
方法来对所有受支持的时区 ID 进行迭代。可以选择受支持的 ID 来获得 TimeZone
。如果想要的时区无法用受支持的 ID 之一表示,那么可以指定自定义时区 ID 来生成 TimeZone。自定义时区 ID 的语法是:
CustomID:
GMT
Sign Hours :
Minutes
GMT
Sign Hours Minutes
GMT
Sign Hours
Sign: 下面之一
+ -
Hours:
Digit
Digit Digit
Minutes:
Digit Digit
Digit: 下面之一
0 1 2 3 4 5 6 7 8 9
Hours 必须在 0 至 23 之间,Minutes 必须在 00 至 59 之间。例如,"GMT+10" 和 "GMT+0010" 分别意味着比 GMT 提前 10 小时和 10 分钟。
格式是与区域无关的,并且数字必须取自 Unicode 标准的 Basic Latin 块。没有夏令时转换安排可以用自定义时区 ID 指定。如果指定的字符串与语法不匹配,就使用 "GMT"
。
当创建一个 TimeZone
时,指定的自定义时区 ID 采用下面的语法进行标准化:
NormalizedCustomID:
GMT
Sign TwoDigitHours :
Minutes
Sign: 下面之一
+ -
TwoDigitHours:
Digit Digit
Minutes:
Digit Digit
Digit: 下面之一
0 1 2 3 4 5 6 7 8 9
例如,TimeZone.getTimeZone("GMT-8").getID() 返回 "GMT-08:00"。
GMT简介:
GMT(Greenwich Mean Time)是格林尼治平时:
由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。
格林尼治标准时间
格林尼治标准时间(GMT,旧译“格林威治平均时间”或“格林威治标准时间”)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。
地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。现在的标准时间——协调世界时(UTC)——由原子钟提供。
自1924年2月5日开始,格林尼治天文台每隔一小时会向全世界发放调时信息。
中文维基百科的编辑历史记录时间,采用的就是格林尼治标准时间。
[End] 骑猪闯天下