// Path: src/main/java/salarycalculation/utils/BaseValueObject.java
// public abstract class BaseValueObject implements ValueObject {
// 
//     @Override
//     public boolean equals(Object obj) {
//         return EqualsBuilder.reflectionEquals(this, obj);
//     }
// 
//     @Override
//     public int hashCode() {
//         return HashCodeBuilder.reflectionHashCode(this);
//     }
// 
//     @Override
//     public String toString() {
//         return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
//     }
// }
// 
// Path: src/main/java/salarycalculation/utils/LocalDates.java
// public class LocalDates {
// 
//     public static Date toDate(LocalDateTime localDateTime) {
//         return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
//     }
// 
//     public static Date toDate(LocalDate localDate) {
//         return toDate(localDate.atStartOfDay());
//     }
// 
//     public static Date toDate(LocalTime localTime) {
//         return toDate(LocalDate.ofEpochDay(0L).atTime(localTime));
//     }
// 
//     public static LocalDateTime toLocalDateTime(Date date) {
//         return LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
//     }
// 
//     public static LocalDate toLocalDate(Date date) {
//         return toLocalDateTime(date).toLocalDate();
//     }
// 
//     public static LocalTime toLocalTime(Date date) {
//         return toLocalDateTime(date).toLocalTime();
//     }
// }


import java.time.LocalDate;
import java.time.Period;
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
import salarycalculation.utils.BaseValueObject;
import salarycalculation.utils.LocalDates;
package salarycalculation.domain.employee;



/**
 * 業務日付を扱うドメイン。
 *
 * @author naotake
 */
public class BusinessDate extends BaseValueObject {

    private final LocalDate calendar;

    /**
     * コンストラクタ.
     */
    private BusinessDate(LocalDate date) {
        this.calendar = Objects.requireNonNull(date);
    }

    public Calendar getAsCalendar() {
        Calendar now = Calendar.getInstance();
        now.setTime(getAsDate());
// Path: src/main/java/salarycalculation/utils/BaseValueObject.java
// public abstract class BaseValueObject implements ValueObject {
// 
//     @Override
//     public boolean equals(Object obj) {
//         return EqualsBuilder.reflectionEquals(this, obj);
//     }
// 
//     @Override
//     public int hashCode() {
//         return HashCodeBuilder.reflectionHashCode(this);
//     }
// 
//     @Override
//     public String toString() {
//         return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
//     }
// }
// 
// Path: src/main/java/salarycalculation/utils/LocalDates.java
// public class LocalDates {
// 
//     public static Date toDate(LocalDateTime localDateTime) {
//         return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
//     }
// 
//     public static Date toDate(LocalDate localDate) {
//         return toDate(localDate.atStartOfDay());
//     }
// 
//     public static Date toDate(LocalTime localTime) {
//         return toDate(LocalDate.ofEpochDay(0L).atTime(localTime));
//     }
// 
//     public static LocalDateTime toLocalDateTime(Date date) {
//         return LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
//     }
// 
//     public static LocalDate toLocalDate(Date date) {
//         return toLocalDateTime(date).toLocalDate();
//     }
// 
//     public static LocalTime toLocalTime(Date date) {
//         return toLocalDateTime(date).toLocalTime();
//     }
// }


// Path: src/main/java/salarycalculation/domain/employee/BusinessDate.java
import java.time.LocalDate;
import java.time.Period;
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
import salarycalculation.utils.BaseValueObject;
import salarycalculation.utils.LocalDates;

package salarycalculation.domain.employee;



/**
 * 業務日付を扱うドメイン。
 *
 * @author naotake
 */
public class BusinessDate extends BaseValueObject {

    private final LocalDate calendar;

    /**
     * コンストラクタ.
     */
    private BusinessDate(LocalDate date) {
        this.calendar = Objects.requireNonNull(date);
    }

    public Calendar getAsCalendar() {
        Calendar now = Calendar.getInstance();
        now.setTime(getAsDate());
        return now;