You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$holding->setDate($this->getDate($r[1]));
// TODO The time code looks wrong.
if ($iwn[1] == 'C') {
preg_match('/^.{14}(.{6})/sm', $iwn[2], $r);
$holding->setTime($r[1]);
} else {
$holding->setTime($r[1]); expecting a DateTime Object, gets string
my fix was a complete rewrite of this block:
OLD:
// Bereitstellungsdatum
// :98A::PRIC//20210304
if (preg_match('/:98([AC])::(.*?):/sm', $block, $iwn)) {
preg_match('/^.{6}(.{8})/sm', $iwn[2], $r);
$holding->setDate($this->getDate($r[1]));
// TODO The time code looks wrong.
if ($iwn[1] == 'C') {
preg_match('/^.{14}(.{6})/sm', $iwn[2], $r);
$holding->setTime($r[1]);
} else {
$time = new \DateTime();
$time->setTime(0, 0);
$holding->setTime($time);
}
}
$result->addHolding($holding);
}
return $result;
}
protected function getDate(string $val): \DateTime
{
preg_match('/(\d{4})(\d{2})(\d{2})/', $val, $m);
try {
return new \DateTime($m[1] . '-' . $m[2] . '-' . $m[3]);
} catch (\Exception $e) {
throw new \InvalidArgumentException("Invalid date: $val", 0, $e);
}
}
}
replaced with NEW:
// Bereitstellungsdatum
// :98A::PRIC//20210304
if (preg_match('~:98[AC]::PRIC//(\d{8})(\d{6})?~sm', $block, $r)){
$date = new \DateTime(substr($r[1],0,4).'-'.substr($r[1],4,2).'-'.substr($r[1],6,2));
$time = $date;
if( !empty($r[2]) ){
$time->setTime(substr($r[2],0,2), substr($r[1],2,2), substr($r[1],4,2));
}
$holding->setDate($date);
$holding->setTime($time);
}else{
// not found
$holding->setDate(new \DateTime('today'));
$holding->setTime(new \DateTime('now'));
}
$result->addHolding($holding);
}
return $result;
}
} // end of class
Sidenote:
I do not understad why there is a separate date and time value in holding
... but in the intend of the old method, time as a DateTime gets the current date by default .. seems not right ...
so I set "date" with time 0:0:0 and "time" with the correct date ...
so I can later use $holding->getTime()->getTimstamp() to get a plausible timestamp
The text was updated successfully, but these errors were encountered:
breaks GetDepotAufstellung
was already marked as weak in MT535.php:
$holding->setTime($r[1]); expecting a DateTime Object, gets string
my fix was a complete rewrite of this block:
OLD:
replaced with NEW:
Sidenote:
I do not understad why there is a separate date and time value in holding
... but in the intend of the old method, time as a DateTime gets the current date by default .. seems not right ...
so I set "date" with time 0:0:0 and "time" with the correct date ...
so I can later use
$holding->getTime()->getTimstamp()
to get a plausible timestampThe text was updated successfully, but these errors were encountered: