/** * Get the pattern from DateTimeFormatInfo or some predefined patterns. * If the $pattern parameter is an array of 2 element, it will assume * that the first element is the date, and second the time * and try to find an appropriate pattern and apply * DateTimeFormatInfo::formatDateTime * See the tutorial documentation for futher details on the patterns. * @param mixed a pattern. * @return string a pattern. * @see DateTimeFormatInfo::formatDateTime() */ protected function getPattern($pattern) { if (is_array($pattern) && count($pattern) == 2) { return $this->formatInfo->formatDateTime($this->getPattern($pattern[0]), $this->getPattern($pattern[1])); } switch ($pattern) { case 'd': return $this->formatInfo->ShortDatePattern; break; case 'D': return $this->formatInfo->LongDatePattern; break; case 'p': return $this->formatInfo->MediumDatePattern; break; case 'P': return $this->formatInfo->FullDatePattern; break; case 't': return $this->formatInfo->ShortTimePattern; break; case 'T': return $this->formatInfo->LongTimePattern; break; case 'q': return $this->formatInfo->MediumTimePattern; break; case 'Q': return $this->formatInfo->FullTimePattern; break; case 'f': return $this->formatInfo->formatDateTime($this->formatInfo->LongDatePattern, $this->formatInfo->ShortTimePattern); break; case 'F': return $this->formatInfo->formatDateTime($this->formatInfo->LongDatePattern, $this->formatInfo->LongTimePattern); break; case 'g': return $this->formatInfo->formatDateTime($this->formatInfo->ShortDatePattern, $this->formatInfo->ShortTimePattern); break; case 'G': return $this->formatInfo->formatDateTime($this->formatInfo->ShortDatePattern, $this->formatInfo->LongTimePattern); break; case 'M': case 'm': return 'MMMM dd'; break; case 'R': case 'r': return 'EEE, dd MMM yyyy HH:mm:ss'; break; case 's': return 'yyyy-MM-ddTHH:mm:ss'; break; case 'u': return 'yyyy-MM-dd HH:mm:ss z'; break; case 'U': return 'EEEE dd MMMM yyyy HH:mm:ss'; break; case 'Y': case 'y': return 'yyyy MMMM'; break; default: return $pattern; } }