[J2ME-原創(chuàng)] 時區(qū)TimeZone和時間
實(shí)現(xiàn)時間的代碼如下:































一般情況下,使用這些就足夠了。
如果更深一步探索,需要對時區(qū)控制的話,見下面:
1.這樣獲取的時間,無論電腦上調(diào)試時還是在真機(jī)上,顯示的都是一樣的











TimeZone就是對時區(qū)的控制,
在Eclipse開發(fā)時,如果不設(shè)置時區(qū)的話,用Calendar獲取的時間是默認(rèn)的格林威治標(biāo)準(zhǔn)時間
在Eclipse開發(fā)時,如果設(shè)置時區(qū)的話, 用Calendar獲取的時間是設(shè)置的那個時區(qū)的時間
A>. 社區(qū)的設(shè)置








B >. 時區(qū)不同,時間的不同































應(yīng)用:
在電腦上的模擬器上,正因?yàn)闀r區(qū)id不同,可以作為簡單的反模擬器使用的一個方法,只要時區(qū)id不同,就不然程序啟動。
2.API中的使用方法:
返回 TimeZone 的 java.util 中的方法 | |
---|---|
static TimeZone |
TimeZone.getDefault() 獲取此主機(jī)的默認(rèn) TimeZone 。 |
TimeZone |
Calendar.getTimeZone() 獲得時區(qū)。 |
TimeZone |
GregorianCalendar.getTimeZone() |
static TimeZone |
TimeZone.getTimeZone(String ID) 獲取給定 ID 的 TimeZone 。 |
參數(shù)類型為 TimeZone 的 java.util 中的方法 | |
---|---|
static Calendar |
Calendar.getInstance(TimeZone zone) 使用指定時區(qū)和默認(rèn)語言環(huán)境獲得一個日歷。 |
static Calendar |
Calendar.getInstance(TimeZone zone, Locale aLocale) 使用指定時區(qū)和語言環(huán)境獲得一個日歷。 |
boolean |
TimeZone.hasSameRules(TimeZone other) 如果此區(qū)域和另一個區(qū)域具有相同的規(guī)則和偏移量,也就是說,如果此區(qū)域只可能在 ID 上與另一個區(qū)域不同,則返回 true。 |
boolean |
SimpleTimeZone.hasSameRules(TimeZone other) 如果此時區(qū)與另一時區(qū)具有相同的規(guī)則和偏移量,則返回 true 。 |
static void |
TimeZone.setDefault(TimeZone zone) 設(shè)置由 getDefault 方法返回的 TimeZone 。 |
void |
Calendar.setTimeZone(TimeZone value) 使用給定的時區(qū)值來設(shè)置時區(qū)。 |
void |
GregorianCalendar.setTimeZone(TimeZone zone) |
參數(shù)類型為 TimeZone 的 java.util 中的構(gòu)造方法 | |
---|---|
Calendar(TimeZone zone, Locale aLocale) 構(gòu)造一個帶有指定時區(qū)和語言環(huán)境的 Calendar。 |
|
GregorianCalendar(TimeZone zone) 在具有默認(rèn)語言環(huán)境的給定時區(qū)內(nèi)構(gòu)造一個基于當(dāng)前時間的 GregorianCalendar 。 |
|
GregorianCalendar(TimeZone zone, Locale aLocale) 在具有給定語言環(huán)境的給定時區(qū)內(nèi)構(gòu)造一個基于當(dāng)前時間的 GregorianCalendar 。 |
3.TimeZone時區(qū)的擴(kuò)展知識
java.util.TimeZone,
表示時區(qū)偏移量,也可以計(jì)算夏令時。
API簡述:
TimeZone
通常,使用 getDefault
獲取 TimeZone
,getDefault
基于程序運(yùn)行所在的時區(qū)創(chuàng)建 TimeZone
。例如,對于在日本運(yùn)行的程序,getDefault
基于日本標(biāo)準(zhǔn)時間創(chuàng)建 TimeZone
對象。
也可以用 getTimeZone
及時區(qū) ID 獲取 TimeZone
。例如美國太平洋時區(qū)的時區(qū) ID 是 "America/Los_Angeles"。因此,可以使用下面語句獲得美國太平洋時間 TimeZone
對象:
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
可以使用 getAvailableIDs
方法來對所有受支持的時區(qū) ID 進(jìn)行迭代。可以選擇受支持的 ID 來獲得 TimeZone
。如果想要的時區(qū)無法用受支持的 ID 之一表示,那么可以指定自定義時區(qū) ID 來生成 TimeZone。自定義時區(qū) ID 的語法是:
Hours 必須在 0 至 23 之間,Minutes 必須在 00 至 59 之間。例如,"GMT+10" 和 "GMT+0010" 分別意味著比 GMT 提前 10 小時和 10 分鐘。CustomID:GMT
Sign Hours:
MinutesGMT
Sign Hours MinutesGMT
Sign Hours Sign: 下面之一+ -
Hours: Digit Digit Digit Minutes: Digit Digit Digit: 下面之一0 1 2 3 4 5 6 7 8 9
格式是與區(qū)域無關(guān)的,并且數(shù)字必須取自 Unicode 標(biāo)準(zhǔn)的 Basic Latin 塊。沒有夏令時轉(zhuǎn)換安排可以用自定義時區(qū) ID 指定。如果指定的字符串與語法不匹配,就使用 "GMT"
。
當(dāng)創(chuàng)建一個 TimeZone
時,指定的自定義時區(qū) ID 采用下面的語法進(jìn)行標(biāo)準(zhǔn)化:
例如,TimeZone.getTimeZone("GMT-8").getID() 返回 "GMT-08:00"。NormalizedCustomID:GMT
Sign TwoDigitHours:
Minutes Sign: 下面之一+ -
TwoDigitHours: Digit Digit Minutes: Digit Digit Digit: 下面之一0 1 2 3 4 5 6 7 8 9
GMT(Greenwich Mean Time)是格林尼治平時:
由于地球軌道并非圓形,其運(yùn)行速度又隨著地球與太陽的距離改變而出現(xiàn)變化,因此視太陽時欠缺均勻性。視太陽日的長度同時亦受到地球自轉(zhuǎn)軸相對軌道面的傾斜度所影響。為著要糾正上述的不均勻性,天文學(xué)家計(jì)算地球非圓形軌跡與極軸傾斜對視太陽時的效應(yīng)。平太陽時就是指經(jīng)修訂后的視太陽時。在格林尼治子午線上的平太陽時稱為世界時(UT0),又叫格林尼治平時(GMT)。
格林尼治標(biāo)準(zhǔn)時間
格林尼治標(biāo)準(zhǔn)時間(GMT,舊譯“格林威治平均時間”或“格林威治標(biāo)準(zhǔn)時間”)是指位于倫敦郊區(qū)的皇家格林尼治天文臺的標(biāo)準(zhǔn)時間,因?yàn)楸境踝游缇€被定義在通過那里的經(jīng)線。
理論上來說,格林尼治標(biāo)準(zhǔn)時間的正午是指當(dāng)太陽橫穿格林尼治子午線時(也就是在格林尼治上空最高點(diǎn)時)的時間。由于地球在它的橢圓軌道里的運(yùn)動速度不均勻,這個時刻可能和實(shí)際的太陽時相差16分鐘。
地球每天的自轉(zhuǎn)是有些不規(guī)則的,而且正在緩慢減速。所以,格林尼治時間已經(jīng)不再被作為標(biāo)準(zhǔn)時間使用。現(xiàn)在的標(biāo)準(zhǔn)時間——協(xié)調(diào)世界時(UTC)——由原子鐘提供。
自1924年2月5日開始,格林尼治天文臺每隔一小時會向全世界發(fā)放調(diào)時信息。
中文維基百科的編輯歷史記錄時間,采用的就是格林尼治標(biāo)準(zhǔn)時間。
[End] 騎豬闖天下