所以,我正在输入一个非常简单的程序来接受用户的日期并将其打印回来.在我的第一次尝试中,我看到年份增加了1900年.究竟是什么原因?我还看到月份值增加1.这是程序块
Date dateInput = new Date(114,2,20,13,18,48); //2014-1900 = 114
System.out.println("Date Entered by You : ");
System.out.println(dateInput);
Run Code Online (Sandbox Code Playgroud)
这个输出是
Date Entered by You :
Thu Mar 20 13:18:48 IST 2014
Run Code Online (Sandbox Code Playgroud)
我将月份值输入为2,但它在3月打印.可能是什么问题呢?为什么Date类被预编程为在输入的年份中添加1900?
检查DateAPI
一个月由0到11的整数表示; 0是1月,1是2月,依此类推; 因此11月是12月.
我将月份值输入为2,但它在3月打印.可能是什么问题呢?
所以按照api,在你的情况下,它是3月.
在我的第一次尝试中,我看到年份增加了1900年.究竟是什么原因?
您已经使用了折旧的Date(int year, int month, int date, int hrs, int min, int sec)构造函数,而且它已经说过了
从JDK版本1.1开始,由Calendar.set(年份+ 1900,月份,日期,小时,分钟,秒)或GregorianCalendar(年份+ 1900,月份,日期,小时,分钟,秒)取代.分配Date对象并对其进行初始化,使其表示在本地时区中由年,月,日,小时,分钟和秒参数指定的秒的开始处的瞬间.
而且,它只是Java日期/时间API的可怕混乱的一部分.月份从零开始,但是,每天从1开始.在Java 8中,新java.time.*包(由JSR-310定义并受Joda-Time启发)修复了这个问题等等.
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |