41 $year = isset($dateParts[0]) ? $dateParts[0] :
"0000";
42 $month = isset($dateParts[1]) ? $dateParts[1] :
"00";
43 $day = isset($dateParts[2]) ? $dateParts[2] :
"00";
45 return sprintf(
"%04d%02d%02d", $year, $month, $day);
55 if (!isset($date->{
'raw'})) {
59 $dateTime =
new DateTime($date->{
'raw'});
60 $arr = [[$dateTime->format(
"Y"), $dateTime->format(
"m"), $dateTime->format(
"d")]];
61 }
catch (Exception $e) {
62 throw new CiteProcException(
"Could not parse date \"".$date->{
'raw'}.
"\".", 0, $e);
77 $variable = $variable = $key->getVariable();
78 $part = $key->getRangePart();
79 if (count($dataItem->{$variable}->{
'date-parts'}) > 1) {
81 $datePart = $dataItem->{$variable}->{
'date-parts'}[$part];
82 $sortKey = self::serializeDate($datePart);
83 if ($key->getSort() ===
"descending" && $part === 0 ||
84 $key->getSort() ===
"ascending" && $part === 1) {
88 if (!isset($dataItem->{$variable}->{
'date-parts'})) {
89 $dateParts = self::parseDateParts($dataItem->{$variable});
91 $dateParts = $dataItem->{$variable}->{
'date-parts'}[0];
93 $sortKey = self::serializeDate($dateParts);
107 foreach ($items as $item) {
108 $dateParts = $item->{$variable}->{
"date-parts"};
109 if ($match ===
"all" && count($dateParts) !== 2) {
111 } elseif ($match ===
"any" && count($dateParts) === 2) {
114 $ret = ($match ===
"all") ? $ret&
true : $ret|
true;