【JAVA小白】问关于java.util.Date的问题

这道题的题目如下:
image.png

我写的代码如下:

package com;

  

import java.util.Date;

  

public class TestDate {

public static void main(String\[\] args) {

 @SuppressWarnings("deprecation")

Date time1 = new Date(95,1,1,0,0,0);

 Date time2 = new Date(95,12,31,23,59,59);

 System.out.println("1995年的第一天" + time1);

 System.out.println("1995年的第最后一天" + time2);

 System.out.println(time1.getTime());

 System.out.println(time2.getTime());

 System.out.println("-----------------------------------");

 long a1 = time1.getTime();

 long a2 = time2.getTime();

 long difference = a2 - a1;

 long number = (long) (Math.random() \* difference);

 long  newNumber = number + a1;

 Date time3 = new Date(newNumber);

 System.out.println(time3);

 }

}

运行结果:

     p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco} 

1995年的第一天Wed Feb 01 00:00:00 CST 1995

1995年的第最后一天Wed Jan 31 23:59:59 CST 1996

791568000000

823103999000

\-----------------------------------

Sun Aug 06 12:41:31 CST 1995

这里我有疑问的是代码中的这一行:
Date time2 = new Date(95,12,31,23,59,59);
我明明输入的是95年的12月31日,为什么系统识别出来却是
image.png
这样一个结果?

阅读 1.6k
1 个回答

我自己找到答案了,应该是下面这样写:

package com;

  

import java.util.Date;

  

public class TestDate {

public static void main(String\[\] args) {

 @SuppressWarnings("deprecation")

Date time1 = new Date(95,0,1,0,0,0);

 Date time1996 = new Date(96,0,1,0,0,0);

 Date time2 = new Date(time1996.getTime() - 1);

 System.out.println("1995年的第一天" + time1);

 System.out.println("1995年的第最后一天" + time2);

 System.out.println(time1.getTime());

 System.out.println(time2.getTime());

 System.out.println("-----------------------------------");

 long a1 = time1.getTime();

 long a2 = time2.getTime();

 long difference = a2 - a1;

 long number = (long) (Math.random() \* difference);

 long  newNumber = number + a1;

 Date time3 = new Date(newNumber);

 System.out.println(time3);

 }

}

原来的错误在两个地方:
第一,Date构造函数的月份是从0开始的,而不是从1开始,所以我需要1月的时候,输入1这个数字,出来的是2月。
第二,在计算1995年最后一个时刻,不应该是1995年12月31日23时59分59秒,而应该是1996年0点-减去1毫秒,这样才精准。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题