结果日期java不明确



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

首先,我使用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)?如果是,如何使用该参数比较两个Date?

然后我创建新对象日期:

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

构造函数参数的顺序是yearmonthdate,没有其他顺序。

来自文件:

Date(int year, int month, int day)


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

取决于您希望如何比较两个Date s。如果您只想弄清楚哪一个先出现,可以使用Date.beforeDate.after

但是正如您所注意到的,Date类被强烈反对使用。改为使用Calendar类(或者更好的是,使用Joda Time库)

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

Date d = g.getTime();

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

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

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

示例:

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

最新更新