不明确的结果日期java

时间:2012-03-18 22:19:30

标签: java date gregorian-calendar

我正在检索一个奇怪的结果:

首先,我使用GregorianCalendar获取当前日期:

GregorianCalendar g = new GregorianCalendar();
int m = g.get(Calendar.DAY_OF_MONTH);
int d = g.get(Calendar.DAY_OF_WEEK);
int y = g.get(Calendar.YEAR);

然后我创建新对象Date

Date d = new Date(d,m,y);

然后我用这种方式将它们打印在一起:

System.out.println(d+" - "+m+" - "+y+" - "+d);

我得到:

1 - 18 - 2012 - Thu Jan 02 00:00:00 CET 1908
你可以解释一下为什么吗?是否已弃用方法Date(day,mouth,year)? 如果是,我如何使用该参数比较两个日期?

3 个答案:

答案 0 :(得分:2)

  

然后我创建新对象Date:

Date d = new Date(d,m,y);

构造函数的参数顺序为yearmonthdate,没有别的。

来自the documentation

  

Date(int year, int month, int day)


  

如何使用该参数比较两个日期?

取决于你想要比较两个Date 。如果您只想弄清哪个是第一个,可以使用Date.beforeDate.after

但正如您所指出的,Date已弃用。请改用Calendar课程(或者更好的是Joda Time library

答案 1 :(得分:1)

如果您需要从Date获取新的GregorianCalendar对象,请执行以下操作:

Date d = g.getTime();

通过这种方式,您不必使用弃用的方法,结果将是您期望的结果。此外,如果您需要获取当前日期,只需撰写new Date(),无需GregorianCalendar

就日期比较而言,您可以使用Date的{​​{1}},compareTo()after()方法。同样,不需要before()

答案 2 :(得分:0)

创建日历,然后使用Date对象设置时间,然后您可以从中获取所需的任何信息。

示例:

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int day = cal.get(Calendar.DAY_OF_MONTH);
// and so on....