<?php ini_set("intl.error_level", E_WARNING); ini_set("intl.default_locale", "pt_PT"); ini_set("date.timezone", 'Atlantic/Azores'); $df = new IntlDateFormatter('pt_PT', 0, 0, 'Europe/Minsk'); $df->setTimeZoneId('Europe/Madrid'); ?> ==DONE==
private function formatTimestamps(\IntlDateFormatter $formatter, $regex, array $timestamps) { $pattern = $formatter->getPattern(); $timezone = $formatter->getTimezoneId(); if (version_compare(\PHP_VERSION, '5.5.0-dev', '>=')) { $formatter->setTimeZone(\DateTimeZone::UTC); } else { $formatter->setTimeZoneId(\DateTimeZone::UTC); } if (preg_match($regex, $pattern, $matches)) { $formatter->setPattern($matches[0]); foreach ($timestamps as $key => $timestamp) { $timestamps[$key] = $formatter->format($timestamp); } // I'd like to clone the formatter above, but then we get a // segmentation fault, so let's restore the old state instead $formatter->setPattern($pattern); } if (version_compare(\PHP_VERSION, '5.5.0-dev', '>=')) { $formatter->setTimeZone($timezone); } else { $formatter->setTimeZoneId($timezone); } return $timestamps; }
/** * Use intl extension for translation * return the self::MENU string with each name of timezone translated * into language of locale. Value of timezone will remain the same * * @param $locale * * @return mixed */ protected static function translateOptions($locale) { d('locale: ' . $locale); $ts = time(); $Formatter = new \IntlDateFormatter($locale, \IntlDateFormatter::NONE, \IntlDateFormatter::NONE, "UTC", NULL, 'vvvv'); $ret = \preg_replace_callback('/value="([a-zA-Z_\\/]+)">([^<]*)</', function ($matches) use($Formatter, $ts) { $Formatter->setTimeZoneId($matches[1]); $res = $Formatter->format($ts); return 'value="' . $matches[1] . '">' . $res . '<'; }, self::MENU); return $ret; }