Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / лекции / лекция 9.ppt
Скачиваний:
101
Добавлен:
17.04.2018
Размер:
187.39 Кб
Скачать

Форматирование даты/времени

Тип преобразования даты/времени — двухсимвольный. (Второй символ — GNU date и POSIX strftime)

H — час 00-23, k — час 0-23

M — минуты 00-59

S — секунды 00-59

L — миллисекунды 000-999

z — смещение GMT (RFC 822)

Z — часовой пояс

B — месяц (полное название)

b — месяц (аббревиатура)

A — день недели (полное название)

a — месяц (аббревиатура)

C — год (00-99)

Y — год (0000-9999)

d — день месяца (01-31)

e — день месяца (1-31)

Форматирование даты/времени

Пример форматирования с использованием индекса аргумента:

Calendar c = ...;

String s1 = String.format("Duke's Birthday:

%1$tm %1$te,%1$tY", c);

Ошибки форматирования

Исключения:

UnknownFormatConversionException или UnknownFormatFlagsException - если указан неизвестный спецификатор или флаг

IllegalFormatWidthException или IllegalFormatPrecisionException если указана неправильная длина или точность

IllegalFormatConversionException если аргумент метода format не может быть преобразован

Форматирование сообщений

Класс MessageFormat форматирует текст, содержащий фрагменты, представленные переменными.

String msg =

MessageFormat.format("On {2}, a {0} destroyed {1} houses and caused {3} of damage", 99, new

GregorianCalendar(1999, 0,

1).getTime(), 10.0E7);

Результат:

On 1/1/99 12:00 AM, a hurricane destroyed 99 houses and caused 100,000,000 of damage

Указание типа и стиля

String msg =

MessageFormat.format("On

{2,date,long}, a {0} destroyed {1} houses and caused

{3,number,currency} of damage", 99, new GregorianCalendar(1999, 0,

1).getTime(), 10.0E7); Результат:

On January 1,1999, a hurricane destroyed 99 houses and caused $100,000,000 of damage

Типы и стили

Типы:

Стили (date и time)

number

short

time

medium

date

long

choice

Full

 

Стили (number)

 

integer

 

currency

 

percent

Формат выбора

Если переменная {1} = 1, результат:

On January 1,1999, a hurricane destroyed 1 houses and...

Необходимо: 0 – no houses 1 – one house 2 – 2 houses

...

{1, choice, 0#no houses|1#one house|2#{1}houses}

Формат выбора

Можно указать нестрогую границу: {-̃∞<no houses|0<one house|2≤{1} houses}

String pattern = "On {2,date,long}, {0} destroyed " + "{1,choice,0#no houses|1#one house|2#{1} houses}" + "and caused {3,number,currency} of damage.";

String pattern = "{0} zerstörte am {2,date,long} " +

"{1,choise,0#kein Haus|1#ein Haus|2#{1} Häuser}" + "und richtete einen Schaden von" +

"{3,number,currency} an.";

Методу format передается один и тот же массив с данными

Ресурсы

Все локализованные данные (текст, картинки и пр.) находятся в пакетах ресурсов (Resource Bundle)

Каждый пакет размещается в файле (файл свойств или класс)

Файл именуется по принципу: имя_пакета_язык_страна

Поиск ресурсов

ResourceBundle currentResources = ResourceBundle.getBundle("mystrings", currentLocale);

Последовательность попыток загрузки:

имя_пакета_трс_язык_трс_страна_трс_вариант

имя_пакета_трс_язык_трс_страна

имя_пакета_трс_язык

имя_пакета_рсу_язык_рсу_страна_рсу_вариант

имя_пакета_рсу_язык_рсу_страна

имя_пакета_рса_язык

имя_пакета

Найденные пакеты уровнем «ниже» становятся «родительскими»

Соседние файлы в папке лекции