我正在检索一个奇怪的结果:
首先,我使用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)
?
如果是,我如何使用该参数比较两个日期?
答案 0 :(得分:2)
然后我创建新对象Date:
Date d = new Date(d,m,y);
构造函数的参数顺序为year
,month
,date
,没有别的。
Date(int year, int month, int day)
如何使用该参数比较两个日期?
取决于你想要比较两个Date
的 。如果您只想弄清哪个是第一个,可以使用Date.before
和Date.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....