/** * Gets the {@code LocalDate} part of this date-time. * <p> * This returns a {@code LocalDate} with the same year, month and day * as this date-time. * * @return LocalDate the date part of this date-time, not null */ public function toLocalDate() { return $this->dateTime->toLocalDate(); }
private function compareTo0(LocalDateTime $other) { $cmp = $this->date->compareTo0($other->toLocalDate()); if ($cmp == 0) { $cmp = $this->time->compareTo($other->toLocalTime()); } return $cmp; }
public function test_factory_of_LocalDateLocalTime_inGap() { $test = ZonedDateTime::ofDateAndTime($this->TEST_PARIS_GAP_2008_03_30_02_30->toLocalDate(), $this->TEST_PARIS_GAP_2008_03_30_02_30->toLocalTime(), self::ZONE_PARIS()); $this->check($test, 2008, 3, 30, 3, 30, 0, 0, self::OFFSET_0200(), self::ZONE_PARIS()); // one $hour later in summer $offset }
/** * Returns an adjusted copy of this date-time. * <p> * This returns a {@code ZonedDateTime}, based on this one, with the date-time adjusted. * The adjustment takes place using the specified adjuster strategy object. * Read the documentation of the adjuster to understand what adjustment will be made. * <p> * A simple adjuster might simply set the one of the fields, such as the year field. * A more complex adjuster might set the date to the last day of the month. * A selection of common adjustments is provided in * {@link java.time.temporal.TemporalAdjusters TemporalAdjusters}. * These include finding the "last day of the month" and "next Wednesday". * Key date-time classes also implement the {@code TemporalAdjuster} interface, * such as {@link Month} and {@link java.time.MonthDay MonthDay}. * The adjuster is responsible for handling special cases, such as the varying * lengths of month and leap years. * <p> * For example this code returns a date on the last day of July: * <pre> * import static java.time.Month.*; * import static java.time.temporal.TemporalAdjusters.*; * * result = zonedDateTime.with(JULY).with(lastDayOfMonth()); * </pre> * <p> * The classes {@link LocalDate} and {@link LocalTime} implement {@code TemporalAdjuster}, * thus this method can be used to change the date, time or offset: * <pre> * result = zonedDateTime.with(date); * result = zonedDateTime.with(time); * </pre> * <p> * {@link ZoneOffset} also implements {@code TemporalAdjuster} however using it * as an argument typically has no effect. The offset of a {@code ZonedDateTime} is * controlled primarily by the time-zone. As such, changing the offset does not generally * make sense, because there is only one valid offset for the local date-time and zone. * If the zoned date-time is in a daylight savings overlap, then the offset is used * to switch between the two valid offsets. In all other cases, the offset is ignored. * <p> * The result of this method is obtained by invoking the * {@link TemporalAdjuster#adjustInto(Temporal)} method on the * specified adjuster passing {@code this} as the argument. * <p> * This instance is immutable and unaffected by this method call. * * @param TemporalAdjuster $adjuster the adjuster to use, not null * @return ZonedDateTime a {@code ZonedDateTime} based on {@code this} with the adjustment made, not null * @throws DateTimeException if the adjustment cannot be made * @throws ArithmeticException if numeric overflow occurs */ public function adjust(TemporalAdjuster $adjuster) { // optimizations if ($adjuster instanceof LocalDate) { return $this->resolveLocal(LocalDateTime::ofDateAndTime($adjuster, $this->dateTime->toLocalTime())); } else { if ($adjuster instanceof LocalTime) { return $this->resolveLocal(LocalDateTime::ofDateAndTime($this->dateTime->toLocalDate(), $adjuster)); } else { if ($adjuster instanceof LocalDateTime) { return $this->resolveLocal($adjuster); } else { if ($adjuster instanceof OffsetDateTime) { $odt = $adjuster; return self::ofLocal($odt->toLocalDateTime(), $this->zone, $odt->getOffset()); } else { if ($adjuster instanceof Instant) { $instant = $adjuster; return self::create($instant->getEpochSecond(), $instant->getNano(), $this->zone); } else { if ($adjuster instanceof ZoneOffset) { return $this->resolveOffset($adjuster); } } } } } } return $adjuster->adjustInto($this); }