Аргерих Л. О языке РНР. Часть 5. Страница 52


Попробуйте сначала задать английское название своей если это не

подействует, попробуйте формат cc_RR. Если и это не поможет, узнайте у ад­министратора сервера, установлена ли локаль, которая обычно бывает рас­положена

Функция strftime() применяется для задания формата временной метки ти­па date(), но на местном языке. Ей передается строка формата и необяза­тельная временная метка. Если временная метка не задана, передается теку­щее время компьютера. Функция применяется в сочетании с set- locale():

setlocale(LC_TIME, $locale); echo(strftime("%c"));

Здесь был применен спецификатор формата %с, устанавливающий формат даты и времени, предпочтительный для текущей локали. Спецификатор %с создает довольно длинную строку, поэтому часто получают из локали саму строку формата. В тех странах, где принят формат день/месяц-год, строка формата задается как %d/%m-%Y, тогда как в других странах формат должен быть %m/%d/%Y.

В такой ситуации функция strftime() может даже не потребоваться и доста­точно будет функции date(). Функция strftimeC нужна, только если требу­ется включить название дня недели или месяца.

Ниже приводится список спецификаторов формата функции strftirneQ (табл. 22.2):

Извлечение информации с помощью localeconv()

Функция localeconvO появилась в РНР версии 4.0.5 и дает информацию о форматировании строк, представляющих денежные единицы. Сама она ни­чего не форматирует, но позволяет узнать правила, действующие в конкрет­ной локали.

Данная функция возвращает ассоциативный массив со стандартными эле­ментами типа decimal_point, thousarids_sep и т. д. Ее полное описание можно найти в электронной документации. Этими элементами можно воспользо­ваться для форматирования строк, например в функции number_fornat():

<?php

Jamount = 123456.123;

setlocale(LC_ALL, 'en_US');

= localeconvO;

echo(number_format($amount,

$locale_info['frac_digits'], $locale_info['mon_decimal_point'], $locale_info['mon_thousands_sep']));

setlocale(LC_ALL, 'da_DK'); $locale_info = localeconv();

echo( numbe r_format ({amount,

$locale_info['frac_digits'], $locale_info['mon_decimal_point' ], $locale_info['mon_thousands_sep']));

?>

Первая команда echo выводит 123,456.12, а вторая - 123.456,12. В простых задачах применять localeconvO нетрудно, но если потребуется учесть всю информацию, которую она способна представить, могут возникнуть слож­ности.

Мы получим большой объем сведений о расположении символа денежной единицы и выводе денежных сумм. Следующая функция также сообщит нам, должен ли иметься пробел между двумя частями показываемой суммы. Функция использует эту информацию, чтобы возвратить форматированную строку: