[英]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.