我正在检索一个奇怪的结果:
首先,我使用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);
构造函数参数的顺序是year
、month
、date
,没有其他顺序。
来自文件:
Date(int year, int month, int day)
如何使用该参数比较两个Date?
取决于您希望如何比较两个Date
s。如果您只想弄清楚哪一个先出现,可以使用Date.before
和Date.after
。
但是正如您所注意到的,Date
类被强烈反对使用。改为使用Calendar
类(或者更好的是,使用Joda Time库)
如果需要从GregorianCalendar
获取新的Date
对象,请执行以下操作:
Date d = g.getTime();
这样,您就不必使用不推荐使用的方法,结果将是您所期望的。此外,如果您需要获得当前日期,只需编写new Date()
,不需要GregorianCalendar
。
就日期比较而言,可以使用Date
的compareTo()
、after()
和before()
方法。同样,不需要GregorianCalendar
。
创建一个日历,然后使用Date对象设置时间,然后您可以从中获得所需的任何信息。
示例:
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int day = cal.get(Calendar.DAY_OF_MONTH);
// and so on....