code: public function parseDatetime($format)
      {
          $dp     = self::$datePattern;
          $tzp    = self::$timeZonePattern;
          $result = null;
          if (!preg_match("/^{$dp}[^0-9][0-9]{2}:[0-9]{2}{$tzp}/", $format, $result)) {
              throw $this->createFormatException($format, "YYYY-MM-DD hh:mm[timezone]");
          }
          
          $year   = substr($format, 0,  4);
          $month  = substr($format, 5,  2);
          $date   = substr($format, 8,  2);
          $hour   = substr($format, 11, 2);
          $min    = substr($format, 14, 2);
          $obj    = new Datetime($year, $month, $date, $hour, $min);
          return ($this->usingTz && isset($result[1])) ?
              $this->adjustFromParse($obj, $result[1]) : $obj;
      }
docs: "YYYY-MM-DDThh:mm" 形式の文字列を解析します.
  文字列の末尾にタイムゾーン (+hh:mm や -hh:mm など) を含む場合は, システム時刻への変換を行います.
  
  @param  string $format 解析対象の文字列
  @return Datetime       解析結果
  @see Format::parseDatetime()