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


设计师可能对显示111而不是2011有什么看法?

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 回答