When I used the following code, the Date
Object was wrong.
Date date = new Date(day.getYear(), day.getMonth(), day.getDay());
Can
You can use the Calendar
class to achieve this.
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);
}
output
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
Without knowing more I'd have to guess but probably you didn't read the JavaDoc on that deprecated constructor:
year the year minus 1900.
month the month between 0-11.
date the day of the month between 1-31.
As you can see, if you want to create a date for today (Aug 5th 2015) you'd need to use new Date (115, 7, 5);
If you see that documentation you are free to guess why this is deprecated and should not be used in any new code. :)
you should use getDate() instead of getDay() method to get the day because getDay() return the day of week not the day of month
int getYear()
Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.YEAR) - 1900.
int getMonth()
Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.MONTH).
int getDay()
Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.DAY_OF_WEEK).
Hence use :
Date date = new Date(Calendar.get(Calendar.YEAR) - 1900, Calendar.get(Calendar.MONTH), Calendar.get(Calendar.DAY_OF_WEEK));
Recomendation : Use Joda-Time
You can do it with a workaround if you're stuck to Java < 8, but it's very ugly:
java.util.Date date = new java.text.SimpleDateFormat("dd.MM.yyyy").parse("05.08.2015");
as @Thomas already stated, the default Constructor for date/month/year is deprecated. Probably take a look at this link if you have access to Java8.