- •Лекция 9
- •Субъекты локализации
- •Различия в дате и времени
- •Различия в числах
- •Региональный стандарт
- •Региональный стандарт
- •Региональный стандарт
- •Региональный стандарт в Java
- •Создание объекта Locale
- •Создание объекта Locale
- •Формат вывода чисел
- •Форматирование числа
- •Форматирование денежных единиц
- •Преобразование строки в число
- •Класс NumberFormat
- •Денежные единицы
- •Денежные единицы
- •Дата и время
- •Форматирование даты и времени
- •Форматирование и анализ даты/времени
- •Календари
- •Calendar.get(field)
- •Calendar.set(field, value)
- •Calendar.add(field,delta)
- •Calendar.roll(field, delta)
- •Сравнение строк
- •Сравнение строк
- •Форматирование строк
- •Спецификатор формата
- •Категории типов преобразования
- •Форматирование даты/времени
- •Форматирование даты/времени
- •Ошибки форматирования
- •Форматирование сообщений
- •Указание типа и стиля
- •Типы и стили
- •Формат выбора
- •Формат выбора
- •Ресурсы
- •Поиск ресурсов
- •Ресурсы - файлы свойств
- •Создание файлов свойств
- •Ресурсы — class файлы
Календари
Календарь по-умолчанию — Григорианский (GregorianCalendar)
Создание объекта календаря:
Calendar rightNow = Calendar.getInstance();
Основные методы класса java.util.Calendar: get(f)
set(f, value) add(f, delta) roll(f, delta)
Calendar.get(field)
field:
ERA, YEAR, MONTH, DAY_OF_MONTH и т.д.
HOUR, HOUR_OF_DAY, MINUTE, SECOND и т.д.
Calendar.set(field, value)
Устанавливает поле field в значение value: Value:
Числовое значение
Константы: JANUARY...DECEMBER, AM и т.д.
Внутреннее представление календаря не пересчитывается до вызовов get(), getTime(), getTimeMillis() и т.д.
Calendar.add(field,delta)
Эквивалентно set(f, get(f) + delta) со следующими замечаниями:
При переполнении значения изменяемого поля изменяется более «значимое» поле.
Если поля, «меньшие» изменяемого выходят за допустимые рамки, они принимают крайние возможные значения.
Пример:
Было: Август 31, 2007г.
Операция: add(CALENDAR.MONTH, 1) Стало: Сентябрь 30, 2007г.
Calendar.roll(field, delta)
Эквивалентно add(field, delta) со следующим различием:
Не изменяет «большие» поля
пример:
Было: август 31, 2007 Операция: roll(field, 8) Стало: апрель 30, 2007
Сравнение строк
С точки зрения |
С точки зрения |
С точки зрения |
Unicode: |
англичанина |
шведа |
America |
America |
America |
Zulu |
Ángström |
ant |
ant |
ant |
zebra |
zebra |
zebra |
Zulu |
Ángström |
Zulu |
Ángström |
Сравнение строк
Locale loc = . . .;
Collator coll = Collator.getInstance(loc); if (coll.compare(a,b) < 0 ) // a < b
Три уровня избирательности (strength) сравнения:
Первостепенный (primary) (Angstom = Ángström, Ant = ant)
Второстепенный (secondary) (Angstom != Ángström, Ant = ant)
Третьестепенный (tertiary) (Angstom != Ángström, Ant != ant)
Задание уровня избирательности: coll.setStrength(Collator.SECONDARY)
Форматирование строк
String String.format(String format, ...)
String String.format(Locale locale, String format, ...)
Форматная строка состоит из спецификаторов формата: %[индекс аргумента$][флаги][ширина][.точность]тип
Спецификатор формата
Индекс аргумента — определяет какой аргумент форматировать в этой позиции
Флаги — дополнительные параметры (зависят от типа) форматирования
Ширина — неотрицательное число, определяющее минимальное кол-во символов
Точность — неотрицательное число, ограничивающее кол-во символов
Тип преобразования задает тип аргумента
Категории типов преобразования
Общие
B,b (boolean), H,h (hash code), S,s (string)
Символьные
C,c (character)
Численные
Целые
D,d (decimal), O,o (octal), X,x (hexadecimal)
Вещественные
E,e (научный), f (float), G,g (переменный), A,a (hex)
Дата/время
T,t (time)
Процент
%
Перевод строки
n (new line)