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;
 }