java - 为什么Java中的Date类显示的年份是减去1900后的?

标签 java date calendar gregorian-calendar

自从 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 可能有什么想法?

最佳答案

减法仅适用于排序年份字段“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());

关于java - 为什么Java中的Date类显示的年份是减去1900后的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970132/

相关文章:

c# - 从c#中的linux "ps"命令输出解析进程启动时间

php - 检查php中数据库中的日期字段是否过期

java - Android 模拟器返回错误的日期

java - 一个好的 Java 商务日历库?

android - 为什么在调用许多其他方法时 calendar.isSet(field) 会变为 true?

java - 使用扩展日历 View 显示事件信息

java - Jackson JSON强制反序列化为对象

java - 从另一个线程在主线程中运行代码

java - 如何在使用 GEF 为 Eclipse 插件生成的图形中获取定向箭头(用于边)?

java - Array<Vector2> 如何定义它?