1

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

首先,我使用以下方法获取当前日期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)吗?如果是,我如何使用该参数比较两个日期?

4

3 回答 3

2

然后我创建新对象日期:

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

构造函数的参数顺序是year, month, date, 没有别的。

文档中

Date(int year, int month, int day)


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

取决于你想如何比较两个sDate。如果您只想弄清楚哪个先出现,您可以使用Date.beforeand Date.after

但正如您所指出的,Date该类已弃用。改用Calendar类,(或者更好的是,乔达时间库

于 2012-03-18T22:22:15.423 回答
1

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

Date d = g.getTime();

这样,您就不必使用已弃用的方法,结果将是您所期望的。此外,如果您需要获取当前日期,只需编写new Date(),无需GregorianCalendar.

就日期比较而言,您可以使用' DatescompareTo()和方法。同样,不需要.after()before()GregorianCalendar

于 2012-03-18T22:23:30.353 回答
0

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

例子:

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int day = cal.get(Calendar.DAY_OF_MONTH);
// and so on....
于 2012-03-18T22:25:57.793 回答