/** * Format a date according to the pattern. * @param mixed the time as integer or string in strtotime format. * @return string formatted date time. */ public function format($time, $pattern = 'F', $charset = 'UTF-8') { if (is_numeric($time)) { //assumes unix epoch $time = floatval($time); } else { if (is_string($time)) { $time = @strtotime($time); } } if ($pattern === null) { $pattern = 'F'; } $s = Prado::createComponent('System.Util.TDateTimeStamp'); $date = $s->getDate($time); $pattern = $this->getPattern($pattern); $tokens = $this->getTokens($pattern); for ($i = 0, $k = count($tokens); $i < $k; ++$i) { $pattern = $tokens[$i]; if ($pattern[0] == "'" && $pattern[strlen($pattern) - 1] == "'") { $sub = preg_replace('/(^\')|(\'$)/', '', $pattern); $tokens[$i] = str_replace('``````', '\'', $sub); } else { if ($pattern == '``````') { $tokens[$i] = '\''; } else { $function = $this->getFunctionName($pattern); if ($function != null) { $fName = 'get' . $function; if (in_array($fName, $this->methods)) { $rs = $this->{$fName}($date, $pattern); $tokens[$i] = $rs; } else { throw new Exception('function ' . $function . ' not found.'); } } } } } return I18N_toEncoding(implode('', $tokens), $charset); }
/** * Formats a date according to the pattern. * * @param mixed the time as integer or string in strtotime format. * @return string formatted date time. */ public function format($time, $pattern = 'F', $inputPattern = null, $charset = 'UTF-8') { $date = $this->getDate($time, $inputPattern); if (is_null($pattern)) { $pattern = 'F'; } $pattern = $this->getPattern($pattern); $tokens = $this->getTokens($pattern); for ($i = 0, $max = count($tokens); $i < $max; $i++) { $pattern = $tokens[$i]; if ($pattern[0] == "'" && $pattern[strlen($pattern) - 1] == "'") { $tokens[$i] = str_replace('``````', '\'', preg_replace('/(^\')|(\'$)/', '', $pattern)); } else { if ($pattern == '``````') { $tokens[$i] = '\''; } else { $function = ucfirst($this->getFunctionName($pattern)); if ($function != null) { $fName = 'get' . $function; if (in_array($fName, $this->methods)) { $tokens[$i] = $this->{$fName}($date, $pattern); } else { throw new sfException(sprintf('Function %s not found.', $function)); } } } } } return I18N_toEncoding(implode('', $tokens), $charset); }
/** * For the number for a certain pattern. The valid patterns are * 'c', 'd', 'e', 'p' or a custom pattern, such as "#.000" for * 3 decimal places. * @param mixed the number to format. * @param string the format pattern, either, 'c', 'd', 'e', 'p' * or a custom pattern. E.g. "#.000" will format the number to * 3 decimal places. * @param string 3-letter ISO 4217 code. For example, the code * "USD" represents the US Dollar and "EUR" represents the Euro currency. * @return string formatted number string */ function format($number, $pattern = 'd', $currency = 'USD', $charset = 'UTF-8') { $oldLocale = setLocale(LC_NUMERIC, '0'); setlocale(LC_NUMERIC, 'C'); $this->setPattern($pattern); if (strtolower($pattern) == 'p') { $number = $number * 100; } $string = (string) $number; $decimal = $this->formatDecimal($string); $integer = $this->formatInteger(abs($number)); if (strlen($decimal) > 0) { $result = $integer . $decimal; } else { $result = $integer; } //get the suffix if ($number >= 0) { $suffix = $this->formatInfo->PositivePattern; } else { if ($number < 0) { $suffix = $this->formatInfo->NegativePattern; } else { $suffix = array("", ""); } } //append and prepend suffix $result = $suffix[0] . $result . $suffix[1]; //replace currency sign $symbol = @$this->formatInfo->getCurrencySymbol($currency); if ($symbol === null) { $symbol = $currency; } $result = str_replace('¤', $symbol, $result); setlocale(LC_NUMERIC, $oldLocale); return I18N_toEncoding($result, $charset); }
public function formatExists($string, $args = array(), $catalogue = null, $charset = null) { if (empty($charset)) { $charset = $this->getCharset(); } $s = $this->getFormattedString(I18N_toUTF8($string, $charset), $args, $catalogue); return I18N_toEncoding($s, $charset); }
/** * Formats the number for a certain pattern. The valid patterns are * 'c', 'd', 'e', 'p' or a custom pattern, such as "#.000" for * 3 decimal places. * * @param mixed the number to format. * @param string the format pattern, either, 'c', 'd', 'e', 'p' * or a custom pattern. E.g. "#.000" will format the number to * 3 decimal places. * @param string 3-letter ISO 4217 code. For example, the code * "USD" represents the US Dollar and "EUR" represents the Euro currency. * @return string formatted number string */ function format($number, $pattern = 'd', $currency = 'USD', $charset = 'UTF-8') { $this->setPattern($pattern); if (strtolower($pattern) == 'p') { $number = $number * 100; } // avoid conversion with exponents // see http://trac.symfony-project.org/ticket/5715 $precision = ini_set('precision', 14); $string = $this->fixFloat($number); ini_set('precision', $precision); list($number, $decimal) = $this->formatDecimal($string); $integer = $this->formatInteger($this->fixFloat(abs($number))); $result = strlen($decimal) > 0 ? $integer . $decimal : $integer; // get the suffix if ($number >= 0) { $suffix = $this->formatInfo->PositivePattern; } else { if ($number < 0) { $suffix = $this->formatInfo->NegativePattern; } else { $suffix = array('', ''); } } // append and prepend suffix $result = $suffix[0] . $result . $suffix[1]; // replace currency sign $symbol = @$this->formatInfo->getCurrencySymbol($currency); if (is_null($symbol)) { $symbol = $currency; } $result = str_replace('¤', $symbol, $result); return I18N_toEncoding($result, $charset); }
/** * For the number for a certain pattern. The valid patterns are * 'c', 'd', 'e', 'p' or a custom pattern, such as "#.000" for * 3 decimal places. * * @param mixed the number to format. * @param string the format pattern, either, 'c', 'd', 'e', 'p' * or a custom pattern. E.g. "#.000" will format the number to * 3 decimal places. * @param string 3-letter ISO 4217 code. For example, the code * "USD" represents the US Dollar and "EUR" represents the Euro currency. * @return string formatted number string */ function format($number, $pattern = 'd', $currency = 'USD', $charset = 'UTF-8') { $this->setPattern($pattern); if (strtolower($pattern) == 'p') { $number = $number * 100; } $string = (string) $number; list($number, $decimal) = $this->formatDecimal($string); $integer = $this->formatInteger(abs($number)); $result = strlen($decimal) > 0 ? $integer . $decimal : $integer; // get the suffix if ($number >= 0) { $suffix = $this->formatInfo->PositivePattern; } else { if ($number < 0) { $suffix = $this->formatInfo->NegativePattern; } else { $suffix = array('', ''); } } // append and prepend suffix $result = $suffix[0] . $result . $suffix[1]; // replace currency sign $symbol = @$this->formatInfo->getCurrencySymbol($currency); if (is_null($symbol)) { $symbol = $currency; } $result = str_replace('¤', $symbol, $result); return I18N_toEncoding($result, $charset); }
/** * Format the string. That is, for a particular string find * the corresponding translation. Variable subsitution is performed * for the $args parameter. A different catalogue can be specified * using the $catalogue parameter. * The output charset is determined by $this->getCharset(); * @param string the string to translate. * @param array a list of string to substitute. * @param string get the translation from a particular message * @param string charset, the input AND output charset * catalogue. * @return string translated string. */ public function format($string, $args = array(), $catalogue = null, $charset = null) { if (empty($charset)) { $charset = $this->getCharset(); } //force args as UTF-8 foreach ($args as $k => $v) { $args[$k] = I18N_toUTF8($v, $charset); } $s = $this->formatString(I18N_toUTF8($string, $charset), $args, $catalogue); return I18N_toEncoding($s, $charset); }
/** * Format a date according to the pattern. * @param mixed the time as integer or string in strtotime format. * @return string formatted date time. */ public function format($time, $pattern = 'F', $charset = 'UTF-8') { if (is_string($time)) { $time = strtotime($time); } if (is_null($pattern)) { $pattern = 'F'; } $date = getdate($time); $pattern = $this->getPattern($pattern); $tokens = $this->getTokens($pattern); for ($i = 0; $i < count($tokens); $i++) { $pattern = $tokens[$i]; if ($pattern[0] == "'" && $pattern[strlen($pattern) - 1] == "'") { $tokens[$i] = preg_replace('/(^\')|(\'$)/', '', $pattern); } else { $function = $this->getFunctionName($pattern); if ($function != null) { $fName = 'get' . $function; if (in_array($fName, $this->methods)) { $rs = $this->{$fName}($date, $pattern); $tokens[$i] = $rs; } else { throw new Exception('function ' . $function . ' not found.'); } } } } return I18N_toEncoding(implode('', $tokens), $charset); }