Android-時間格式

§ UTC vs GMT
    ● GMT(Greenwich Mean Time,格林威治標準時間),是17世紀時,英國為了海上霸權,所發展出來的標準時間,並依此地為全球時間的參考點、劃分各個時區。其時間即年平均的太陽時,是以實際觀測到的天體運行來做決定
    ● UTC(Coordinated Universal Time,世界協同時間),因為地球自轉平均是變慢的,導致經由GMT觀測得出的時間並不相同,這對精密的科學儀器有很大的影響。為了使任何時候的每一秒相同,UTC於20世紀代替GMT做為大多地區的標準時間,它是利用銫原子鐘(TAI)數來做為時間的依據。銫原子有穩定的特性,300萬年只誤差1秒,UTC定義一秒為銫原子震動9192631770次。為了跟太陽時間UT1(相當於GMT)對齊,國際地球自轉服務組織(IERS)在UT1和TAI相差超過0.9秒時,將會發布UTC加入潤秒(1927~2015已加入26次潤秒)。
    IERS規定潤秒將會加在12/31和6/30的最後一秒(3、9月為備選),因此可能會在12/31-11:59中出現61秒的情況,但許多電腦還是無法接受潤秒的概念,例如JVM在任何時候都宣告一天為24 × 60 × 60 = 86400秒。

§ Android中主要的時間類別有三個:

Calendar、Date、Timestamp

  ● Calendar
    是一個抽象類別,以下是常見的建構子和方法:

  1. 建構子
    Protected construction

  2. 方法
    -取得當下時間:#Calendar.getInstance() –> Calendar //它會利用預設的time zone和locale去得到現在的時間
    +get(int field) –> int
    //待續
    -取得當前時區:資訊園-Android手機獲取時區

  ● Date
    現幾乎已被Calendar取代掉了,常用於Calendar和Timestamp的中介類別,是一個古老的時間類別,精度到秒,以下是常見的建構子和方法:

  1. 建構子
    -取得當下時間:+Date curDate = new Date();
    -以年/月/日-時:分:秒構建:Date curDate = new Date(int 年, int 月-1, int 日, int 時, int 分, int 秒) //其中年不可低於1900、月為0(Jan.)~11(Dec.)

  2. 方法
    +after(Date)->boolean
    +before(Date)->boolean
    +compareTo(Date)->int
    +getYear –> int 年-1900
    +getMonth –> int  (Jan.)~11(Dec.)
    +getDay –> int 1~31
    +getHour –> int  0~23
    +getMinute –> int  0~59
    +getSecond =-> int 0~61 //60、61只能存在於JVM考慮潤秒時出現

  ● Timestamp
    //待續

§ 參考:Wiki-GMT泛科學-到底是GMT+8還是 UTC+8?Android-Date

留言