Читаем Java 7 полностью

Некоторые данные — даты, время — традиционно представляются в различных местностях по-разному. Например, дата в России выводится в формате число.месяц.год (через точку): 27.06.2011. В США принята запись месяц/число/год (через наклонную черту): 06/27/11.

Совокупность таких форматов для данной местности, как говорят на жаргоне "локаль", хранится в объекте класса Locale из пакета java.util. Для создания такого объекта достаточно знать язык language и местность country. Иногда требуется третья характеристика — вариант variant, определяющая программный продукт, например: "win", "mac",

"POSIX".

По умолчанию местные установки определяются операционной системой и читаются из системных свойств.

Посмотрите на следующие строки (см. также рис. 6.2):

user.language = ru // Язык — русский

user.region = RU // Местность — Россия

file.encoding = Cp1251 // Байтовая кодировка — CP1251

Они определяют русскую локаль и локальную кодировку байтовых символов. Локаль, установленную по умолчанию на той машине, где выполняется программа, можно выяснить статическим методом Locale.getDefault ( ).

Чтобы работать с другой локалью, ее надо прежде всего создать. Для этого в классе Locale есть два конструктора:

Locale(String language, String country);

Locale(String language, String country, String variant);

Параметр language — это строка из двух строчных букв, определенная стандартом ISO639, например: "ru", "fr", "en". Параметр country — строка из двух прописных букв, определенная стандартом ISO3166, например: "ru", "us", "gb". Параметр variant не определяется стандартом, это может быть, например, строка "Traditional".

Локаль часто указывают одной строкой "ru_RU", "en_GB", "en_US", "en_CA" и т. д.

После создания локали можно сделать ее локалью по умолчанию статическим методом:

Locale.setDefault(Locale newLocale);

Несколько статических методов класса Locale позволяют получить сведения о локали по умолчанию или локали, заданной параметром locale:

□ String getCountry() — стандартный код страны из двух букв;

□ String getDisplayCountry() — страна записывается словом, обычно выводящимся на экран;

□ String getDisplayCountry(Locale locale) — то же для указанной локали.

Такие же методы есть для языка и варианта.

Можно просмотреть список всех локалей, определенных для данной JVM (Java Virtual Machine, виртуальная машина Java), и их параметров, выводимый в стандартном виде:

Locale[] getAvailableLocales();

String[] getISOCountries();

String[] getlSOLanguages();

Установленная локаль в дальнейшем используется при выводе данных в местном формате.

Работа с датами и временем

Методы работы с датами и показаниями времени собраны в два класса из пакета

java.util: Calendar и Date.

Объект класса Date хранит число миллисекунд, прошедших с 1 января 1970 г. 00:00:00 по Гринвичу. Это "день рождения" операционной системы UNIX, он называется "Epoch".

Класс Date удобно использовать для отсчета промежутков времени в миллисекундах.

Получить текущее число миллисекунд, прошедших с момента Epoch на той машине, где выполняется программа, можно статическим методом System.currentTimeMillis ( ).

В классе Date два конструктора. Конструктор Date () заносит в создаваемый объект текущее время машины, на которой выполняется программа, по системным часам, а конструктор Date (long millisec) — указанное число.

Получить значение, хранящееся в объекте, можно методом long getTime (), установить новое значение — методом setTime(long newTime).

Три логических метода сравнивают отсчеты времени:

□ boolean after(long when) — возвращает true, если время when больше данного;

□ boolean before(long when) — возвращает true, если время when меньше данного;

□ boolean after(Object when) — возвращает true, если when — объект класса Date и времена совпадают.

Еще два метода, сравнивая отсчеты времени, возвращают отрицательное число типа int, если данное время меньше параметра when; нуль, если времена совпадают; положительное число, если данное время больше параметра when:

□ int compareTo(Date when);

□ int compareTo (Object when) — если when не относится к объектам класса Date, создается исключительная ситуация.

Преобразование миллисекунд, хранящихся в объектах класса Date, в текущее время и дату производится методами класса Calendar.

Часовой пояс и летнее время

Методы установки и изменения часового пояса (time zone), а также летнего времени (Daylight Savings Time, DST), собраны в абстрактном классе TimeZone из пакета java.util. В этом же пакете есть его реализация-подкласс SimpleTimeZone.

В классе SimpleTimeZone три конструктора, но чаще всего объект создается статическим методом getDefault (), возвращающим часовой пояс, установленный на машине, выполняющей программу.

В этих классах множество методов работы с часовыми поясами, но в большинстве случаев требуется только узнать часовой пояс на машине, выполняющей программу, статическим методом getDefault (), проверить, осуществляется ли переход на летнее время, логическим методом useDaylightTime() , и установить часовой пояс методом

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных