Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Поддерживаемые Календари


Этот календарь документов страницы системы, поддерживаемые в Java Sun Комплект разработчика 6 SE (JDK) и Java Среда выполнения SE 6 (JRE). Другие реализации Java Платформа SE могут поддерживать различные календарные системы.


1. Введение

Calendar абстрактный базовый класс для того, чтобы преобразовать между a Date объект и ряд целочисленных полей такой как YEAR, MONTH, DAY, HOUR, и так далее. Подклассы Calendar интерпретируйте a Date согласно правилам определенной календарной системы. Платформа обеспечивает один общедоступный конкретный подкласс Calendar: GregorianCalendar. Метод фабрики, Calendar.getInstance, возвращает конкретную календарную системную реализацию для данного Locale. Следующее является поддерживаемыми календарными системами:

Locale
Календарная Система
С тех пор (версия JRE)
th_TH (с любой разновидностью)
Тайский буддистский календарь
1.4
ja_JP_JP
Японский имперский календарь
1.6
Любой кроме вышеупомянутого Locales
Григорианский календарь (GregorianCalendar)
1.1


2. Тайский буддистский Календарь

В Таиланде система Григорианского календаря используется с буддистским Основанным на эре годом, нумеруя. В буддистскую Эру () или B.E. (พ. ศ.) для краткости год 1 соответствует BCE (BC) 543 (Юлианский). Поэтому, Грегорианский год + 543 является значением года B.E.

Calendar.getInstance метод возвращает тайский буддистский календарный экземпляр, если тайская локаль определяется, который определяется ее языком и значениями страны. Эта тайская буддистская календарная реализация поддерживает даты точно от B.E. 2484 (Грегорианский 1941). Исторические календарные системные переходы не поддерживаются реализацией. Calendar.ERA значение в течение буддистской Эры 1.

3. Японский Имперский Календарь

В Японии система Григорианского календаря используется с имперским основанным на эре годом, нумеруя. Имперская эра запускается с подъема императора, и его число года сбрасывается к 1 с новым именем эры. Первый год имперской эры не находится в синхронизации с Грегорианскими границами года, и любой день мог быть первым днем имперской эры. Например, текущая эра, запущенная с 8 января 1989 (Грегорианский). Однако, месяц и день месяца numberings находятся в синхронизации с системой Григорианского календаря.

Calendar.getInstance метод возвращает японский имперский календарный экземпляр, если ja_JP_JP локаль определяется. Эта реализация поддерживает эры начиная с Мэйдзи со следующими датами перехода.

Имя эры
(на японском языке)
Эра
Сокр.
ERA
значение поля

Дата перехода и время
(Грегорианский)
- (西暦)
-
0
-
Мэйдзи (明治)
М.
1
01.01.1868 местное время 0:00:00
Тайсё (大正)
T
2
30.07.1912 местного времени 0:00:00
Showa (昭和)
S
3
25.12.1926 местного времени 0:00:00
Heisei (平成)
H
4
08.01.1989 местного времени 0:00:00

Перед Мэйдзи поддерживается Грегорианский год, нумеруя. В отличие от этого GregorianCalendar, японская имперская календарная реализация не поддерживает никого Юлианского к Грегорианскому переходу, и год, нумеруя прежде, чем Грегорианский 1 будет 0,-1,-2..., не 1, 2, 3... Строго говоря Григорианский календарь используется с 1873 (Мэйдзи 5), и другие календарные системы использовались перед тем годом. Однако, реализация определяет первый день Мэйдзи как 1 января 1868, который не исторически точен. Японские декреты, связанные с календарными системами, не определяют, как иметь дело с часовыми поясами за пределами Японии. Реализация предполагает, что переходы эры происходят в полночь в местное время в любом часовом поясе.

В Календарном API некоторые поля находятся в синхронизации со значением года для переходов эры и поэтому обрабатывают неправильные правила на первом году имперской эры. Следующая таблица показывает те поля.

Календарное поле
Описание
WEEK_OF_YEAR
Определить первое WEEK_OF_YEAR из года 1 в каждую эру, те же самые правила, поскольку применяется определение первой недели к первому дню недели и минимальным дням в первых недельных значениях. Например, если первый день недели SUNDAY и минимальные дни на первой неделе 1, WEEK_OF_YEAR значение от 18.12.1926 является 51 из Тайсё 15, и значение от 25.12.1926 является 1 из Showa 1.
DAY_OF_YEAR
DAY_OF_YEAR значение первого дня каждой эры 1. Например, смотря на переход между эрами Showa и Heisei, в последний день эры Showa (Showa 07.01.64, грегорианское значение 07.01.1989) 7 и на следующий день, который является первым днем эры Heisei (Heisei 1.01.08), 1. getLeastMaximum метод возвращает минимальное значение всего года 1 длина в днях.


4. Форматирование и Парсинг Даты Non-GregorianCalendar

A DateFormat у экземпляра есть a Calendar экземпляр для внутренних разовых датой преобразований, основанных на данном Locale или значение по умолчанию один. То же самое правило применяется для того, чтобы создать a Calendar экземпляр. Например, если ja_JP_JP локаль определяется, DateFormat.getDateInstance метод возвращает a DateFormat экземпляр, который обрабатывает японские имперские календарные даты. Следующий код:
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL,
 new Locale("ja", "JP", "JP"));
System.out.println(df.format(new Date()));
произведет вывод, как:
平成17年10月25日
Кроме того, DateFormat.parse метод анализирует строку даты с имперской эрой. Следующий код:
System.out.println(df.parse("平成元年10月25日"));
произведет вывод в часовом поясе Азии/Токио:
Wed Oct 25 00:00:00 JST 1989
Отметьте это a Date объект, возвращенный DateFormat.parse метод представляет соответствующую Грегорианскую дату. Преобразовать a Date к японской имперской дате, Calendar.setTime метод должен использоваться с данным Date.

В SimpleDateFormat, следующие правила применяются для тайских буддистских и японских имперских календарных систем.

Календарная система
Буква образца
Описание
Тайский буддист G
Число букв образца не влияет на выведенные на экран имена эры.
Тайский буддист y
То же самое правило числа образца обозначает буквами как GregorianCalendar применяется.
Японский империал G
Для того, чтобы отформатировать, если число букв образца 4 или больше, используются длинные имена эры (например, "平成"). Иначе, сокращения (например, "H") используются. Для того, чтобы проанализировать, принимаются и длинные имена эры и сокращения.
Японский империал y
Для того, чтобы отформатировать, если число букв образца 4 или больше, первый год эры форматируется как локаль определенное представление, такое как "元" в японской локали. Другие значения года выводятся на экран как числа. 2-и 4-разрядные правила GregorianCalendar форматирование даты не применяется. Для того, чтобы проанализировать, и локаль принимаются определенное представление и представление числа.

Если различный элемент является "TH" в тайской локали, тайские цифры используются для разового датой форматирования. Например, следующий код:
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL,
 new Locale("th", "TH", "TH"));
System.out.println(df.format(new Date()));
произведет вывод, как:
 ๒๕  พ. ศ. ๒๕๔๘

5. Соображения сериализации

Когда a Calendar объект, возвращенный Calendar.getInstance метод фабрики сериализируется и отправляется другой JVM, десериализации объектных сбоев, если целевая JVM не поддерживает то же самое Calendar подкласс, который использовался, чтобы создать сериализированный Calendar объект. Пожалуйста, удостоверьтесь что то же самое Calendar подклассы поддерживаются в JVM, где требуется обмениваться сериализированный Calendar объекты.


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами