/** * @internal * @param int * @return int */ public static function getWeekRangeInt($wby) { $date = LocalDate::of($wby, 1, 1); // 53 weeks if standard year starts on Thursday, or Wed in a leap year if ($date->getDayOfWeek() == DayOfWeek::THURSDAY() || $date->getDayOfWeek() == DayOfWeek::WEDNESDAY() && $date->isLeapYear()) { return 53; } return 52; }
public function test_toString() { $this->assertEquals(DayOfWeek::MONDAY()->__toString(), "MONDAY"); $this->assertEquals(DayOfWeek::TUESDAY()->__toString(), "TUESDAY"); $this->assertEquals(DayOfWeek::WEDNESDAY()->__toString(), "WEDNESDAY"); $this->assertEquals(DayOfWeek::THURSDAY()->__toString(), "THURSDAY"); $this->assertEquals(DayOfWeek::FRIDAY()->__toString(), "FRIDAY"); $this->assertEquals(DayOfWeek::SATURDAY()->__toString(), "SATURDAY"); $this->assertEquals(DayOfWeek::SUNDAY()->__toString(), "SUNDAY"); }
/** * @group long */ public function test_loop() { // loop round at least one 400 $year cycle, including before 1970 $date = LocalDate::of(1960, 1, 5); // Tuseday of $week 1 1960 $year = 1960; $wby = 1960; $weekLen = 52; $week = 1; while ($date->getYear() < 2400) { $loopDow = $date->getDayOfWeek(); if ($date->getYear() != $year) { $year = $date->getYear(); } if ($loopDow == DayOfWeek::MONDAY()) { $week++; if ($week == 53 && $weekLen == 52 || $week == 54) { $week = 1; $firstDayOfWeekBasedYear = $date->plusDays(14)->withDayOfYear(1); $firstDay = $firstDayOfWeekBasedYear->getDayOfWeek(); $weekLen = $firstDay == DayOfWeek::THURSDAY() || $firstDay == DayOfWeek::WEDNESDAY() && $firstDayOfWeekBasedYear->isLeapYear() ? 53 : 52; $wby++; } } $this->assertEquals(IsoFields::WEEK_OF_WEEK_BASED_YEAR()->rangeRefinedBy($date), ValueRange::of(1, $weekLen), "Failed on " . $date . " " . $date->getDayOfWeek()); $this->assertEquals(IsoFields::WEEK_OF_WEEK_BASED_YEAR()->getFrom($date), $week, "Failed on " . $date . " " . $date->getDayOfWeek()); $this->assertEquals($date->get(IsoFields::WEEK_OF_WEEK_BASED_YEAR()), $week, "Failed on " . $date . " " . $date->getDayOfWeek()); $this->assertEquals(IsoFields::WEEK_BASED_YEAR()->getFrom($date), $wby, "Failed on " . $date . " " . $date->getDayOfWeek()); $this->assertEquals($date->get(IsoFields::WEEK_BASED_YEAR()), $wby, "Failed on " . $date . " " . $date->getDayOfWeek()); $date = $date->plusDays(1); } }
function data_week() { return [[LocalDate::of(1969, 12, 29), DayOfWeek::MONDAY(), 1, 1970], [LocalDate::of(2012, 12, 23), DayOfWeek::SUNDAY(), 51, 2012], [LocalDate::of(2012, 12, 24), DayOfWeek::MONDAY(), 52, 2012], [LocalDate::of(2012, 12, 27), DayOfWeek::THURSDAY(), 52, 2012], [LocalDate::of(2012, 12, 28), DayOfWeek::FRIDAY(), 52, 2012], [LocalDate::of(2012, 12, 29), DayOfWeek::SATURDAY(), 52, 2012], [LocalDate::of(2012, 12, 30), DayOfWeek::SUNDAY(), 52, 2012], [LocalDate::of(2012, 12, 31), DayOfWeek::MONDAY(), 1, 2013], [LocalDate::of(2013, 1, 1), DayOfWeek::TUESDAY(), 1, 2013], [LocalDate::of(2013, 1, 2), DayOfWeek::WEDNESDAY(), 1, 2013], [LocalDate::of(2013, 1, 6), DayOfWeek::SUNDAY(), 1, 2013], [LocalDate::of(2013, 1, 7), DayOfWeek::MONDAY(), 2, 2013]]; }