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.

Share:
29,609

Related videos on Youtube

Rod182211
Author by

Rod182211

New at Java and trying to learn.

Updated on July 13, 2022

Comments

  • Rod182211
    Rod182211 12 months

    I 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);
        } 
    
  • Luzifer42
    Luzifer42 over 1 year
    Since Hibernate supported LocalDate other features regarding java.util.Date are broken. This is not funny: hibernate.atlassian.net/browse/HHH-11875

Related