Convert Calendar to LocalDate
29,609
Solution 1
I have tried the following code to get the LocalDate from Calendar
Calendar calendar = Calendar.getInstance();
TimeZone tz = calendar.getTimeZone();
ZoneId zid = tz == null ? ZoneId.systemDefault() : tz.toZoneId();
LocalDate localDate = LocalDateTime.ofInstant(calendar.toInstant(), zid).LocalDate();
or simply in one line:
LocalDate localDate = LocalDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId()).toLocalDate();
I have followed these steps from this link Convert Calendar to LocalDateTime
Solution 2
In Java 8 you can just do
LocalDateTime.ofInstant(cal.toInstant(), ZoneId.systemDefault())
Solution 3
Java 9
import java.util.Calendar;
import java.time.LocalDate;
import java.time.ZoneId;
LocalDate.ofInstant(calendar.toInstant(), ZoneId.systemDefault());
Solution 4
The following code probably works too.
Calendar cal = Calendar.getInstance();
Date input = cal.getTime();
LocalDate da = input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
This first gets the date in Date type and then converts it to LocalDate format as far as I know.
Related videos on Youtube
Comments
-
Rod182211 12 monthsI decided to upgrade from 5.5 to Optaplanner 7.5 Nurseroster but have run into a number of silly issues. Below is one. The routine I previously used is below. Now however the new version requires LocalDate. I have an MySql database back-end and the users select the roster schedule planner via a calendar. Any suggestions will be appreciated.
int shiftDateSize = maxDayIndex + 1; List<ShiftDate> shiftDateList = new ArrayList<ShiftDate>(shiftDateSize); //shiftDateMap = new HashMap<String, ShiftDate>(shiftDateSize); long id = 0L; int dayIndex = 0; calendar.setTime(startDate); for (int i = 0; i < shiftDateSize; i++) { ShiftDate shiftDate = new ShiftDate(); shiftDate.setId(id); shiftDate.setDayIndex(dayIndex); **String dateString = dateFormat.format(calendar.getTime());** shiftDate.setDateString(dateString); **shiftDate.setDayOfWeek(DayOfWeek.valueOfCalendar(calendar.get(Calendar.DAY_OF_WEEK)));** shiftDate.setShiftList(new ArrayList<Shift>()); shiftDateList.add(shiftDate); shiftDateMap.put(dateString, shiftDate); id++; dayIndex++; calendar.add(Calendar.DAY_OF_YEAR, 1); } nurseRoster.setShiftDateList(shiftDateList); }-
daniu over 5 yearsPossible duplicate of Convert java.util.Date to java.time.LocalDate -
Muthu over 5 years@Convert(converter = LocalDateTimeConverter.class) try it
-
-
Luzifer42 over 1 yearSince Hibernate supported LocalDate other features regarding java.util.Date are broken. This is not funny: hibernate.atlassian.net/browse/HHH-11875