为什么Java中的Date类在从它减去1900后显示一年?

时间:2011-11-01 17:11:38

标签: java date calendar gregorian-calendar

由于Java中的Date类已被弃用,我使用它的频率相当低,但是当我使用它时,我觉得它有时可能会激怒某人,因为它显示当前年份后从它中减去1900。当日历类及其子类 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


设计师在展示 111 而不是 2011 时可能会有什么?

1 个答案:

答案 0 :(得分: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());