1

JavaのDateクラスは廃止されたので使う頻度はかなり減りましたが、使ってみると1900年を引いて現在の年を表示するのでイライラすることもあると思いました。次のように、 CalendarクラスとそのサブクラスであるGregorianCalendarがシステムによって維持されている正確な年を返すときに、設計者は実際に何を感じ、そのようなメカニズムを課すべきでしたか?

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


2011ではなく111を表示することについて、デザイナーはどう思うでしょうか?

4

1 に答える 1

2

減算は、ソート年フィールド「y」のみです。長い年フィールドを指定すると、'Y' 減算は行われません。

つまり、デフォルトの toString が短い年形式を使用する理由は、Java 開発者が平均的な状況で思いついた最も自然な表現だったと思います。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());
于 2011-11-01T17:18:24.157 に答える