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