### Question:
DateTimeService { public ZonedDateTime getBeginningTimestampOfDayUTC(ZonedDateTime zonedDateTime) { return zonedDateTime.toInstant().atZone(ZoneId.of("UTC")).withHour(0).withMinute(0).withSecond(0).withNano(0); }  ZonedDateTime getFutureDate(ZonedDateTime timestamp, int numberOfDays, boolean endOfDay); ZonedDateTime getDateTimeNowEurope(); ZonedDateTime getDateTimeNowUTC(); ZonedDateTime getBeginningTimestampOfMonthUTC(final ZonedDateTime zonedDateTime); ZonedDateTime getEndingTimestampOfMonthUTC(ZonedDateTime zonedDateTime); ZonedDateTime getBeginningTimestampOfWeekUTC(ZonedDateTime zonedDateTime); ZonedDateTime getEndingTimestampOfWeekUTC(ZonedDateTime zonedDateTime); ZonedDateTime getBeginningTimestampOfDayUTC(ZonedDateTime zonedDateTime); ZonedDateTime getEndingTimestampOfDayUTC(ZonedDateTime zonedDateTime); ZonedDateTime convertDateToZonedDateTimeEurope(Date date); ZonedDateTime getBeginningOfCurrentYear(); ZonedDateTime getEndingOfCurrentYear(); String getMonthNameFor(ZonedDateTime dateTime);  }### Answer:
@Test public void getBeginningTimestampOfDay() throws Exception { DateTimeService cut = new DateTimeService(); ZonedDateTime expected = ZonedDateTime.now(ZoneId.of("UTC")).withYear(2017).withMonth(6).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0); ZonedDateTime current = ZonedDateTime.of(2017, 6, 1, 12, 23, 45, 800, ZoneId.of("UTC")); assertThat(cut.getBeginningTimestampOfDayUTC(current), is(expected)); }