2011-11-01 412 views
1

由於Java中的Date類被棄用,所以我使用它的頻率很低,但是當我使用它時,覺得它有時可能會刺激某人,因爲它在顯示當前年份後會從中減去1900。設計師實際上應該如何感受並強加這樣的機制,而日曆類和它的子類GregorianCalendar返回由系統維護的確切年份如下?爲什麼Java中的Date類顯示一年後從中減去1900?

public class Main 
{ 
    public static void main(String[] args) 
    { 
     Date d=new Date(); 
     System.out.println("Day : "+d.getDate()+" Month : "+d.getMonth() 
     +" Year : "+d.getYear()); 

     Calendar c=Calendar.getInstance(); 
     System.out.println("Day : "+c.get(Calendar.DATE)+" Month : 
     "+c.get(Calendar.MONTH)+" Year : "+c.get(Calendar.YEAR)); 
    } 
} 

它顯示輸出類似如下所示的一個,目前的日,月,年。

日:1月:10年:111

日:1月:10年:2011


什麼設計者可能雖然關於顯示而不是?

+1

考慮到這是在JDK1.1過時,他們可能已經意識到非常快,他們犯了一個錯誤... – corsiKa

+0

好,我們不能回到過去,並且看到他們的想法,但我的猜測是,這只是一個錯誤,沒有其他。畢竟,Java 1.1是Y2K之前的版本。然而,即使這個解釋是可疑的。 – jefflunt

+4

只是要清楚。 ['java.util.Date'](http://download.oracle.com/javase/6/docs/api/java/util/Date.html)肯定不會被棄用。它處理日期部分的方法,即。月,日,年等被棄用。但是['java.util.Date'](http://download.oracle.com/javase/6/docs/api/java/util/Date.html)仍然有許多有效用途。 – Asaph

回答

2

減法僅適用於排序年份字段'y'。如果您指定長年字段,則「Y」不會發生減法。

如果你的意思是,爲什麼默認的toString使用短年格式,我認爲這是java devs爲平均情況提出的最自然的表達。如果您需要顯示與不同格式日期Date對象,可以考慮使用SimpleDateFormatter類:http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); 
formatter.format(new Date());