簡體   English   中英

如何從年,月和日獲取日期對象?

[英]How to get a Date object from year,month and day?

當我使用以下代碼時, Date對象是錯誤的。

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

誰能告訴我如何從年,月和日的值中獲取日期對象?

您可以使用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

在不知道更多信息的情況下,我不得不猜測,但也許您沒有在該過時的構造函數上閱讀過JavaDoc:

今年年份減去1900。
0-11 個月之間的月份。
日期在1-31之間的日期

如您所見,如果要為今天(2015年8月5日)創建日期,則需要使用new Date (115, 7, 5);

如果您看到該文檔,則可以隨意猜測為什么不推薦使用此文檔,並且不應在任何新代碼中使用它。 :)

如果您堅持使用Java <8,則可以使用一種解決方法來做到這一點,但這非常丑陋:

java.util.Date date = new java.text.SimpleDateFormat("dd.MM.yyyy").parse("05.08.2015");

如@Thomas已經指出的那樣,不建議使用日期/月份/年份的默認構造函數。 如果可以訪問Java8,請看一下此鏈接

您應該使用getDate()而不是getDay()方法來獲取日期,因為getDay()返回星期幾而不是月份中的某天

  • int getYear()不推薦使用。 從JDK 1.1版開始,由Calendar.get(Calendar.YEAR) - 1900.取代Calendar.get(Calendar.YEAR) - 1900.

  • int getMonth()不推薦使用。 從JDK 1.1版開始,由Calendar.get(Calendar.MONTH).取代Calendar.get(Calendar.MONTH).

  • int getDay()不推薦使用。 從JDK版本1.1開始,由Calendar.get(Calendar.DAY_OF_WEEK).取代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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM