public function format(DateTimePrintContext $context, &$buf) { $length = strlen($buf); if ($this->optional) { $context->startOptional(); } try { foreach ($this->printerParsers as $pp) { if ($pp->format($context, $buf) === false) { $buf = substr($buf, 0, $length); // reset buffer return true; } } } finally { if ($this->optional) { $context->endOptional(); } } return true; }