ISO Week Date#
Note
ISO week date: https://en.wikipedia.org/wiki/ISO_week_date
ISO week date is implemented by isoWeek() helper and IsoWeekCalendar factory.
Years are assumed to be in the astronomical notation. (1 AD is 1, 1 BC is 0, 2 BC is -1)
The date range is -5884323-W19-6 to 5874898-W23-2 for a 32-bit system
and -25252734927771267-W17-7 to 25252734927761842-W25-1 on a 64-bit system.
Note
ISO week date is also supported by the native DateTime type and the IntlDateFormatter component
Factories#
You can create an instance of date from either date components or a y-Ww-d string format (years can be negative):
<?php
use Arokettu\Date\IsoWeekCalendar;
use Arokettu\Date\WeekDay;
$date = IsoWeekCalendar::create(2012, 12, 2); // 2012-03-20
// or use a WeekDay object
$date = IsoWeekCalendar::create(2012, 12, WeekDay::Tuesday);
// or parse y-Ww-d
$date = IsoWeekCalendar::parse('2012-W12-2');
// W is optional
$date = IsoWeekCalendar::parse('2012-12-2');
// years may be negative and leading zeroes are ignored
$date = IsoWeekCalendar::parse('-5000-W2-000001'); // works too!
// short form
// (for the short form W is required and leading zeros are not allowed)
$date = IsoWeekCalendar::parse('2012W122');
Getters#
There are getters for day, week, year, string representation and array representation:
<?php
use Arokettu\Date\IsoWeekCalendar;
$date = $date = IsoWeekCalendar::create(2012, 12, 2);
$date->isoWeek()->getWeekDay(); // WeekDay::Tuesday
$date->isoWeek()->getWeekDayNumber(); // 2
$date->isoWeek()->getWeek(); // 12
$date->isoWeek()->getYear(); // 2012
$date->isoWeek()->getDateArray(); // [$y, $w, $d]: [2012, 12, 2]
$date->isoWeek()->toString(); // y-Ww-d: 2012-W12-2