如何从年,月和日获得Date对象?

时间:2015-08-05 08:02:33

标签: java date

当我使用以下代码时,Date对象出错了。

Date date = new Date(day.getYear(), day.getMonth(), day.getDay());

有谁能告诉我如何从年,月和日的价值中获取日期对象?

5 个答案:

答案 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