/** * Returns a copy of this {@code LocalDateTime} with the time truncated. * <p> * Truncation returns a copy of the original date-time with fields * smaller than the specified unit set to zero. * For example, truncating with the {@link ChronoUnit#MINUTES minutes} unit * will set the second-of-minute and nano-of-second field to zero. * <p> * The unit must have a {@linkplain TemporalUnit#getDuration() duration} * that divides into the length of a standard day without remainder. * This includes all supplied time units on {@link ChronoUnit} and * {@link ChronoUnit#DAYS DAYS}. Other units throw an exception. * <p> * This instance is immutable and unaffected by this method call. * * @param TemporalUnit $unit the unit to truncate to, not null * @return LocalDateTime a {@code LocalDateTime} based on this date-time with the time truncated, not null * @throws DateTimeException if unable to truncate * @throws UnsupportedTemporalTypeException if the unit is not supported */ public function truncatedTo(TemporalUnit $unit) { return $this->_with($this->date, $this->time->truncatedTo($unit)); }
/** * @dataProvider data_truncatedToInvalid * @expectedException \Celest\DateTimeException */ public function test_truncatedTo_invalid(LocalTime $input, TemporalUnit $unit) { $input->truncatedTo($unit); }