實(shí)現(xiàn)時(shí)間的代碼如下:
private int minute = 0, hour = 0,second = 0;
private String strminute, strhour, strsecond;

/** *//**
* 畫(huà)時(shí)間-
* @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);
}
一般情況下,使用這些就足夠了。
如果更深一步探索,需要對(duì)時(shí)區(qū)控制的話(huà),見(jiàn)下面:
1.這樣獲取的時(shí)間,無(wú)論電腦上調(diào)試時(shí)還是在真機(jī)上,顯示的都是一樣的
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("北京時(shí)間 "+strhour + ":" + strminute +":"+strsecond);//GMT+08:00
TimeZone就是對(duì)時(shí)區(qū)的控制,
在Eclipse開(kāi)發(fā)時(shí),如果不設(shè)置時(shí)區(qū)的話(huà),用Calendar獲取的時(shí)間是默認(rèn)的格林威治標(biāo)準(zhǔn)時(shí)間
在Eclipse開(kāi)發(fā)時(shí),如果設(shè)置時(shí)區(qū)的話(huà), 用Calendar獲取的時(shí)間是設(shè)置的那個(gè)時(shí)區(qū)的時(shí)間
舉例如下:
A>. 社區(qū)的設(shè)置
//獲得實(shí)際手機(jī)使用區(qū)域的默認(rèn)時(shí)區(qū)
TimeZone defaultZone = TimeZone.getDefault();
//獲得默認(rèn)時(shí)區(qū)對(duì)象的ID標(biāo)識(shí)
System.out.println(defaultZone.getID());//UTC
//取得中國(guó)的時(shí)區(qū)
TimeZone china=TimeZone.getTimeZone("GMT+08:00");
System.out.println(china.getID());//GMT+08:00
B >. 時(shí)區(qū)不同,時(shí)間的不同
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("東八時(shí)區(qū)ID"+prompt3);//GMT+08:00
System.out.println("北京時(shí)間 "+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("默認(rèn)時(shí)區(qū)ID"+prompt4);//UTC
System.out.println("默認(rèn)時(shí)間 "+strhour + ":" + strminute +":"+strsecond);//
這兩個(gè)時(shí)間,在手機(jī)上顯示的是一樣的,但是在Eclipse開(kāi)發(fā)時(shí),是相差8個(gè)小時(shí)的。
應(yīng)用:
在電腦上的模擬器上,正因?yàn)闀r(shí)區(qū)id不同,可以作為簡(jiǎn)單的反模擬器使用的一個(gè)方法,只要時(shí)區(qū)id不同,就不然程序啟動(dòng)。
2.API中的使用方法:
3.TimeZone時(shí)區(qū)的擴(kuò)展知識(shí)
java.util.TimeZone,
API簡(jiǎn)述:
TimeZone
表示時(shí)區(qū)偏移量,也可以計(jì)算夏令時(shí)。
通常,使用 getDefault
獲取 TimeZone
,getDefault
基于程序運(yùn)行所在的時(shí)區(qū)創(chuàng)建 TimeZone
。例如,對(duì)于在日本運(yùn)行的程序,getDefault
基于日本標(biāo)準(zhǔn)時(shí)間創(chuàng)建 TimeZone
對(duì)象。
也可以用 getTimeZone
及時(shí)區(qū) ID 獲取 TimeZone
。例如美國(guó)太平洋時(shí)區(qū)的時(shí)區(qū) ID 是 "America/Los_Angeles"。因此,可以使用下面語(yǔ)句獲得美國(guó)太平洋時(shí)間 TimeZone
對(duì)象:
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
可以使用 getAvailableIDs
方法來(lái)對(duì)所有受支持的時(shí)區(qū) ID 進(jìn)行迭代。可以選擇受支持的 ID 來(lái)獲得 TimeZone
。如果想要的時(shí)區(qū)無(wú)法用受支持的 ID 之一表示,那么可以指定自定義時(shí)區(qū) ID 來(lái)生成 TimeZone。自定義時(shí)區(qū) ID 的語(yǔ)法是:
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 小時(shí)和 10 分鐘。
格式是與區(qū)域無(wú)關(guān)的,并且數(shù)字必須取自 Unicode 標(biāo)準(zhǔn)的 Basic Latin 塊。沒(méi)有夏令時(shí)轉(zhuǎn)換安排可以用自定義時(shí)區(qū) ID 指定。如果指定的字符串與語(yǔ)法不匹配,就使用 "GMT"
。
當(dāng)創(chuàng)建一個(gè) TimeZone
時(shí),指定的自定義時(shí)區(qū) ID 采用下面的語(yǔ)法進(jìn)行標(biāo)準(zhǔn)化:
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簡(jiǎn)介:
GMT(Greenwich Mean Time)是格林尼治平時(shí):
由于地球軌道并非圓形,其運(yùn)行速度又隨著地球與太陽(yáng)的距離改變而出現(xiàn)變化,因此視太陽(yáng)時(shí)欠缺均勻性。視太陽(yáng)日的長(zhǎng)度同時(shí)亦受到地球自轉(zhuǎn)軸相對(duì)軌道面的傾斜度所影響。為著要糾正上述的不均勻性,天文學(xué)家計(jì)算地球非圓形軌跡與極軸傾斜對(duì)視太陽(yáng)時(shí)的效應(yīng)。平太陽(yáng)時(shí)就是指經(jīng)修訂后的視太陽(yáng)時(shí)。在格林尼治子午線(xiàn)上的平太陽(yáng)時(shí)稱(chēng)為世界時(shí)(UT0),又叫格林尼治平時(shí)(GMT)。
格林尼治標(biāo)準(zhǔn)時(shí)間
格林尼治標(biāo)準(zhǔn)時(shí)間(GMT,舊譯“格林威治平均時(shí)間”或“格林威治標(biāo)準(zhǔn)時(shí)間”)是指位于倫敦郊區(qū)的皇家格林尼治天文臺(tái)的標(biāo)準(zhǔn)時(shí)間,因?yàn)楸境踝游缇€(xiàn)被定義在通過(guò)那里的經(jīng)線(xiàn)。
理論上來(lái)說(shuō),格林尼治標(biāo)準(zhǔn)時(shí)間的正午是指當(dāng)太陽(yáng)橫穿格林尼治子午線(xiàn)時(shí)(也就是在格林尼治上空最高點(diǎn)時(shí))的時(shí)間。由于地球在它的橢圓軌道里的運(yùn)動(dòng)速度不均勻,這個(gè)時(shí)刻可能和實(shí)際的太陽(yáng)時(shí)相差16分鐘。
地球每天的自轉(zhuǎn)是有些不規(guī)則的,而且正在緩慢減速。所以,格林尼治時(shí)間已經(jīng)不再被作為標(biāo)準(zhǔn)時(shí)間使用。現(xiàn)在的標(biāo)準(zhǔn)時(shí)間——協(xié)調(diào)世界時(shí)(UTC)——由原子鐘提供。
自1924年2月5日開(kāi)始,格林尼治天文臺(tái)每隔一小時(shí)會(huì)向全世界發(fā)放調(diào)時(shí)信息。
中文維基百科的編輯歷史記錄時(shí)間,采用的就是格林尼治標(biāo)準(zhǔn)時(shí)間。
[End] 騎豬闖天下