当我使用以下代码时,Date
对象出错了。
Date date = new Date(day.getYear(), day.getMonth(), day.getDay());
有谁能告诉我如何从年,月和日的价值中获取日期对象?
答案 0 :(得分:5)
您可以使用Calendar
类来实现此目的。
public static void main(String[] args) throws Exception {
Date date = new Date (115, 7, 5);
System.out.println("date = " + date);
Calendar calendar = GregorianCalendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 5);
calendar.set(Calendar.MONTH, 7);
calendar.set(Calendar.YEAR, 2015);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY, 0);
date = calendar.getTime();
System.out.println("calendar = " + date);
// or create directly a new clanedar instance
// thanks Tom to mention this
calendar = new GregorianCalendar(2015, 7, 5);
date = calendar.getTime();
System.out.println("calendar = " + date);
}
<强>输出强>
date = Wed Aug 05 00:00:00 CEST 2015
calendar = Wed Aug 05 00:00:00 CEST 2015
calendar = Wed Aug 05 00:00:00 CEST 2015
答案 1 :(得分:4)
不知道更多我不得不猜测,但可能你没有在那个已弃用的构造函数上读取JavaDoc:
年度年份减去1900年 月 0-11之间的月份 日期 1-31之间的某一天。
如您所见,如果您想为今天(2015年8月5日)创建日期,则需要使用new Date (115, 7, 5);
如果您看到该文档,则可以自由地猜测为何不推荐使用该文档,并且不应在任何新代码中使用。 :)
答案 2 :(得分:1)
如果您坚持使用Java&lt; 8,但这很难看:
java.util.Date date = new java.text.SimpleDateFormat("dd.MM.yyyy").parse("05.08.2015");
正如@Thomas所说,不推荐使用日期/月/年的默认构造函数。如果您有权访问Java8,可能需要查看this link。
答案 3 :(得分:0)
你应该使用getDate()而不是getDay()方法来获取当天,因为getDay()返回星期几而不是月中的某一天
答案 4 :(得分:0)
<强> int getYear()
强>
已过时。从JDK 1.1版开始,由 Calendar.get(Calendar.YEAR) - 1900.
<强> int getMonth()
强>
已过时。从JDK 1.1版开始,由 Calendar.get(Calendar.MONTH).
<强> int getDay()
强>
已过时。从JDK 1.1版开始,由 Calendar.get(Calendar.DAY_OF_WEEK).
因此使用:
<强> Date date = new Date(Calendar.get(Calendar.YEAR) - 1900, Calendar.get(Calendar.MONTH), Calendar.get(Calendar.DAY_OF_WEEK));
强>
推荐:使用Joda-Time