stripchars = $stripchars; } public function replace($pattern) { return preg_replace('/[' . $this->stripchars . ']/', '', $pattern); } } class StartEndTrim implements PatternModifier { private $skipstart; private $skipend; public function __construct($skipstart, $skipend) { $this->skipstart = $skipstart; $this->skipend = $skipend; } public function replace($pattern) { return substr($pattern, $this->skipstart, -$this->skipend); } } class Combined implements PatternModifier { private $modifiers; public function __construct($modifiers) { $this->modifiers = $modifiers; } public function replace($pattern) { $result = $pattern; foreach($this->modifiers as $m) { $result = $m->replace($result); } return $result; } } function test($locale, $t, $format, $pattern_modifier) { echo "Locale: $locale\r\n"; $idf = new IntlDateFormatter($locale, $format, IntlDateFormatter::NONE); echo $idf->format($t) . "\r\n"; $pattern = $idf->getPattern(); $pattern = $pattern_modifier->replace($pattern); $idf->setPattern($pattern); echo $idf->format($t) . "\r\n"; } $t = time(); foreach (['da_DK', 'en_US', 'fr_FR', 'de_DE'] as $locale) { test($locale, $t, IntlDateFormatter::LONG, new RegexRemove('y,')); test($locale, $t, IntlDateFormatter::SHORT, new Combined([new RegexRemove('y'), new StartEndTrim(0, 1)])); } ?>