Calendar Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Класс Calendar
является абстрактным классом, предоставляющим методы для преобразования между определенным моментом во времени и набором #fields calendar fields
, таким как YEAR
, MONTH
, DAY_OF_MONTH
, HOUR
и т. д., а также для управления полями календаря, например для получения даты следующей недели.
[Android.Runtime.Register("java/util/Calendar", DoNotGenerateAcw=true)]
public abstract class Calendar : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Lang.IComparable
[<Android.Runtime.Register("java/util/Calendar", DoNotGenerateAcw=true)>]
type Calendar = class
inherit Object
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface IComparable
- Наследование
- Производный
- Атрибуты
- Реализации
Комментарии
Класс Calendar
является абстрактным классом, предоставляющим методы для преобразования между определенным моментом во времени и набором #fields calendar fields
, таким как YEAR
, MONTH
, DAY_OF_MONTH
, HOUR
и т. д., а также для управления полями календаря, например для получения даты следующей недели. Момент во времени может быть представлен миллисекундным значением, которое является смещением от "Epoch"><em>Epoch</em>, 1 января 1970 г. 00:00:00.000 GMT (григорианский).
Класс также предоставляет дополнительные поля и методы для реализации конкретной системы календаря за пределами пакета. Эти поля и методы определяются как protected
.
Как и другие классы, зависящие от языкового стандарта, Calendar
getInstance
предоставляет метод класса , для получения общего полезного объекта этого типа. Calendar
getInstance
Метод возвращает объект , Calendar
поля календаря которого были инициализированы с текущими датами и временем: <blockquote>
Calendar rightNow = Calendar.getInstance();
</blockquote>
Объект Calendar
может создавать все значения полей календаря, необходимые для реализации форматирования даты и времени для определенного языка и стиля календаря (например, японского григорианского, японского и традиционного). Calendar
определяет диапазон значений, возвращаемых определенными полями календаря, а также их значение. Например, первый месяц системы календарей имеет значение MONTH == JANUARY
для всех календарей. Другие значения определяются конкретным подклассом, например ERA
. Дополнительные сведения см. в документации по отдельным полям и документации по подклассам.
<h2>Получение и настройка значений< полей календаря/h2>
Значения полей календаря можно задать, вызвав методы set
. Любые значения полей, заданные в , Calendar
не будут интерпретироваться до тех пор, пока ему не потребуется вычислить значение времени (миллисекунды из эпохи) или значения полей календаря. get
Вызов , getTimeInMillis
, getTime
add
и roll
включает такое вычисление.
<h3>Leniency</h3>
Calendar
имеет два режима для интерпретации полей календаря: <em>lenient</em> и <em>non-lenient</em>. Если объект Calendar
находится в режиме снисходителен, он принимает более широкий диапазон значений полей календаря, чем он создает. При повторном вычислении значений Calendar
полей календаря для возвращаемых свойством get()
все поля календаря нормализуются. Например, мягкий GregorianCalendar
интерпретирует MONTH == JANUARY
как DAY_OF_MONTH == 32
1 февраля.
Если объект Calendar
находится в режиме не снисходителен, он создает исключение, если в полях календаря имеется несоответствие. Например, всегда GregorianCalendar
возвращает DAY_OF_MONTH
значения от 1 до длины месяца. При GregorianCalendar
вычислении значений полей времени или календаря создается исключение, если задано какое-либо значение поля вне диапазона.
<h3>"first_week">Первая неделя</h3>
Calendar
определяет семидневную неделю, определяемую языковым стандартом, используя два параметра: первый день недели и минимальный день первой недели (от 1 до 7). Эти числа берутся из данных ресурса языкового стандарта или самого языкового стандарта при Calendar
создании . Если указанный языковой стандарт содержит расширения Юникода fw, первый день недели будет получен в соответствии с этими расширениями. Они также могут быть явно указаны с помощью методов для задания их значений.
При задании WEEK_OF_MONTH
или получении полей Calendar
или WEEK_OF_YEAR
необходимо определить первую неделю месяца или года в качестве опорной точки. Первая неделя месяца или года определяется как самый ранний семидневный период, начинающийся getFirstDayOfWeek()
с и содержащий по крайней мере getMinimalDaysInFirstWeek()
дни этого месяца или года. Недели нумерованы ..., -1, 0 предшествуют первой неделе; недели под номером 2, 3,... Следуйте за ним. Обратите внимание, что нормализованная нумеровка, возвращаемая методом , get()
может отличаться. Например, определенный Calendar
подкласс может назначить неделю перед 1-й неделей года как неделю <i>n</i>
предыдущего года.
<h3>Разрешение< полей календаря/h3>
При вычислении даты и времени из полей календаря может быть недостаточно информации для вычисления (например, только год и месяц без дня месяца) или могут быть несогласованные сведения (например, вторник, 15 июля 1996 г. (по григорианскому): 15 июля 1996 г. фактически это понедельник. Calendar
разрешает значения полей календаря для определения даты и времени следующим образом.
"разрешение"> Если в значениях полей календаря возникает конфликт, <c>Calendar</c> присваивает приоритеты полям календаря, которые были заданы недавно. Ниже приведены сочетания полей календаря по умолчанию. Будет использоваться самая последняя комбинация, определяемая последним заданным одним полем.
"date_resolution">Для полей даты: <blockquote>
YEAR + MONTH + DAY_OF_MONTH
YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
YEAR + DAY_OF_YEAR
YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
</blockquote>
Поля "time_resolution">Для времени суток: <blockquote>
HOUR_OF_DAY
AM_PM + HOUR
</blockquote>
Если есть поля календаря, значения которых не были заданы в выбранной комбинации полей, Calendar
использует значения по умолчанию. Значение по умолчанию для каждого поля может отличаться в зависимости от конкретных систем календаря. Например, в GregorianCalendar
поле по умолчанию используется то же самое, что и в начале эпохи: т. е. YEAR = 1970
, MONTH = JANUARY
, DAY_OF_MONTH = 1
, и т. д.
<strong>Note:</strong> Существуют некоторые возможные неоднозначности в интерпретации определенных сингулярных времен, которые разрешаются следующим образом: <ol><li> 23:59 — последняя минута дня, а 00:00 — первая минута следующего дня. Таким образом, 23:59 31 декабря 1999 < 00:00 1 января 2000 < 00:01 1 января 2000.
<li> Хотя исторически не точно, полночь также принадлежит "am", а полдень принадлежит "pm", так что в тот же день, 12:00 утра (полночь) < 12:01 am, и 12:00 вечера (полдень) < 12:01 вечера </ol>
Строки формата даты и времени не являются частью определения календаря, так как они должны изменяться или переопределяться пользователем во время выполнения. Используется DateFormat
для форматирования дат.
<h3>Field Manipulation</h3>
Поля календаря можно изменить с помощью трех методов: set()
, add()
и roll()
.
<strong>set(f, value)
</strong> изменяет поле f
календаря на value
. Кроме того, он задает внутреннюю переменную-член, указывающую, что поле f
календаря было изменено. Хотя поле f
календаря изменяется немедленно, значение времени календаря в миллисекундах не вычисляется до следующего вызова get()
, getTime()
, getTimeInMillis()
, add()
или roll()
. Таким образом, несколько вызовов не set()
запускают несколько ненужных вычислений. В результате изменения поля календаря с помощью set()
также могут изменяться другие поля календаря в зависимости от поля календаря, значения поля календаря и системы календаря. Кроме того, get(f)
не обязательно возвращает value
значение set при вызове set
метода после перекомпьюляции полей календаря. Особенности определяются конкретным классом calendar.
<Em>Example</em>: Рассмотрим GregorianCalendar
, как первоначально задано значение 31 августа 1999 г. Для вызова set(Calendar.MONTH, Calendar.SEPTEMBER)
устанавливается дата 31 сентября 1999 года. Это временное внутреннее представление, которое разрешается до 1 октября 1999 г., если getTime()
затем вызывается . Однако при вызове set(Calendar.DAY_OF_MONTH, 30)
перед вызовом для getTime()
устанавливается дата 30 сентября 1999 г., так как повторное вычисление не выполняется самостоятельно set()
.
<strong>add(f, delta)
</strong> добавляет delta
к полю f
. Это эквивалентно вызову set(f, get(f) + delta)
с двумя корректировками:
<blockquote>
<strong>Добавить правило 1</strong>. Значение поля f
после вызова минус значение поля f
до вызова delta
равно , по модулю любого переполнения, произошедшего в поле f
. Переполнение происходит, когда значение поля превышает свой диапазон и в результате следующее большее поле увеличивается или уменьшается, а значение поля корректируется обратно в свой диапазон.
<strong>Добавьте правило 2</strong>. Если ожидается, что меньшее поле будет инвариантным, но оно не может быть равно его предыдущему значению из-за изменений в его минимальном или максимальном значении после изменения поля f
или других ограничений, таких как изменения смещения часового пояса, его значение корректируется так, чтобы оно было как можно ближе к ожидаемому значению. Меньшее поле представляет меньшую единицу времени. HOUR
— это меньшее поле, чем DAY_OF_MONTH
. Для небольших полей, которые не должны быть инвариантными, корректировка не производится. Система календарей определяет, какие поля должны быть инвариантными.
</blockquote>
Кроме того, в отличие от set()
, add()
выполняется немедленная перекомпьюция миллисекунд календаря и всех полей.
<Em>Example</em>: Рассмотрим GregorianCalendar
, как первоначально задано значение 31 августа 1999 г. При вызове add(Calendar.MONTH, 13)
календарь устанавливается на 30 сентября 2000 г. <strong>Add rule 1</strong> устанавливает MONTH
для поля сентябрь, так как добавление 13 месяцев к августу дает сентябрь следующего года. Так как DAY_OF_MONTH
в сентябре не может быть 31 в , <правило строгого>GregorianCalendar
добавления 2</strong> задает DAY_OF_MONTH
для параметра значение 30, ближайшее возможное значение. Хотя это меньшее поле, DAY_OF_WEEK
оно не регулируется правилом 2, так как ожидается, что оно изменится при изменении месяца в GregorianCalendar
.
<strong>roll(f, delta)
</strong> добавляет delta
к полю f
, не изменяя большие поля. Это эквивалентно вызову add(f, delta)
со следующей корректировкой:
<blockquote>
<strong>Roll rule</strong>. Большие поля после вызова не изменяются. Большее поле представляет большую единицу времени. DAY_OF_MONTH
— это большее поле, чем HOUR
.
</blockquote>
<Em>Example</em>: See java.util.GregorianCalendar#roll(int, int)
.
<strong>Модель использования</strong>. Чтобы мотивировать поведение и roll()
, рассмотрим компонент пользовательского add()
интерфейса с кнопками увеличения и уменьшения для месяца, дня и года, а также базовый GregorianCalendar
. Если интерфейс читает 31 января 1999 г., а пользователь нажимает кнопку увеличения месяца, что он должен читать? Если базовая реализация использует set()
, это может быть прочитано 3 марта 1999 г. Лучший результат был бы 28 февраля 1999 года. Кроме того, если пользователь снова нажимает кнопку увеличения месяца, она должна прочитать 31 марта 1999 года, а не 28 марта 1999 года. Сохранив исходную дату и используя add()
или roll()
, в зависимости от того, следует ли повлиять на большие поля, пользовательский интерфейс может вести себя так, как ожидает большинство пользователей.
Добавлено в версии 1.1.
Документация по Java для java.util.Calendar
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.
Конструкторы
Calendar() |
Создает календарь с часовой поясом по умолчанию и языковым стандартом по умолчанию |
Calendar(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Calendar(TimeZone, Locale) |
Создает календарь с указанным часовой поясом и языковым стандартом. |
Поля
AllStyles |
Устаревшие..
Спецификатор стиля для |
Am |
Значение поля, |
AmPm |
Устаревшие..
Номер поля для |
April |
Значение поля, |
August |
Значение поля, |
Date |
Устаревшие..
Номер поля для |
DayOfMonth |
Устаревшие..
Номер поля для |
DayOfWeek |
Устаревшие..
Номер поля для |
DayOfWeekInMonth |
Устаревшие..
Номер поля для |
DayOfYear |
Устаревшие..
Номер поля для |
December |
Значение поля, |
DstOffset |
Устаревшие..
Номер поля для |
Era |
Устаревшие..
Номер поля для |
February |
Значение поля, |
FieldCount |
Число различных полей, распознаваемых |
Friday |
Значение поля, |
Hour |
Устаревшие..
Номер поля для |
HourOfDay |
Устаревшие..
Номер поля для |
January |
Значение поля, |
July |
Значение поля, |
June |
Значение поля, |
Long |
Устаревшие..
Описатель стиля для |
LongFormat |
Описатель стиля для |
LongStandalone |
Описатель стиля для |
March |
Значение поля, |
May |
Значение поля, |
Millisecond |
Устаревшие..
Номер поля для |
Minute |
Устаревшие..
Номер поля для |
Monday |
Значение поля, |
Month |
Устаревшие..
Номер поля для |
NarrowFormat |
Описатель стиля для |
NarrowStandalone |
Описатель стиля для |
November |
Значение поля, |
October |
Значение поля, |
Pm |
Значение поля, |
Saturday |
Значение поля, |
Second |
Устаревшие..
Номер поля для |
September |
Значение поля, |
Short |
Устаревшие..
Описатель стиля для |
ShortFormat |
Описатель стиля для |
ShortStandalone |
Описатель стиля для |
Sunday |
Значение поля, |
Thursday |
Значение поля, |
Tuesday |
Значение поля, |
Undecimber |
Значение поля, |
Wednesday |
Значение поля, |
WeekOfMonth |
Устаревшие..
Номер поля для |
WeekOfYear |
Устаревшие..
Номер поля для |
Year |
Устаревшие..
Номер поля для |
ZoneOffset |
Устаревшие..
Номер поля для |
Свойства
AreFieldsSet |
Значение true, если |
AvailableCalendarTypes |
Возвращает неизменяемый |
CalendarType |
Возвращает тип календаря данного объекта |
Class |
Возвращает класс среды выполнения данного объекта |
Fields |
Значения полей календаря для текущего заданного времени для этого календаря. |
FirstDayOfWeek |
Возвращает значение первого дня недели; E. |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
Instance |
Возвращает календарь с использованием часового пояса и языкового стандарта по умолчанию. |
IsTimeSet |
Значение true, если значение является допустимым |
IsWeekDateSupported |
Возвращает значение, указывающее, поддерживает ли этот параметр |
JniIdentityHashCode |
Класс |
JniPeerMembers |
Класс |
Lenient |
Указывает, должна ли интерпретация даты и времени быть снисходительна. |
MinimalDaysInFirstWeek |
Возвращает минимальное количество дней, необходимых в первую неделю года; E. |
PeerReference |
Класс |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Time |
Возвращает объект , |
TimeInMillis |
Возвращает значение времени этого календаря в миллисекундах. |
TimeZone |
Возвращает часовой пояс. -или- Задает часовой пояс с заданным значением часового пояса. |
WeeksInWeekYear |
Возвращает количество недель в годе недели, представленном данным |
WeekYear |
Возвращает год недели, представленный данным . |
Методы
Add(CalendarField, Int32) |
Добавляет или вычитает указанное количество времени в заданном поле календаря на основе правил календаря. |
After(Object) |
Возвращает значение, указывающее, представляет ли это |
Before(Object) |
Возвращает значение, указывающее, представляет ли это |
Clear() |
Задает все значения полей календаря и значения времени (смещение в миллисекундах от "#Epoch">Epoch) этого |
Clear(CalendarField) |
Задает заданное значение поля календаря и значение времени (смещение в миллисекундах от "#Epoch">Epoch) этого |
Clone() |
Создает и возвращает копию этого объекта. |
CompareTo(Calendar) |
Сравнивает значения времени (смещения в миллисекундах от "#Epoch"Epoch),> представленные двумя |
Complete() |
Заполняет все ненастроенные поля в полях календаря. |
ComputeFields() |
Преобразует текущее значение |
ComputeTime() |
Преобразует значения текущего поля календаря в значение времени |
Dispose() |
Класс |
Dispose(Boolean) |
Класс |
Equals(Object) |
Указывает, равен ли какой-то другой объект этому объекту. (Унаследовано от Object) |
Get(CalendarField) |
Возвращает значение заданного поля календаря. |
GetActualMaximum(CalendarField) |
Возвращает максимальное значение, которое могло иметь указанное поле календаря с учетом значения времени данного объекта |
GetActualMinimum(CalendarField) |
Возвращает минимальное значение, которое могло иметь указанное поле календаря, учитывая значение времени данного объекта |
GetAvailableLocales() |
Возвращает массив всех языковых стандартов, для которых |
GetDisplayName(Int32, Int32, Locale) |
Возвращает строковое представление значения календаря |
GetDisplayNames(Int32, Int32, Locale) |
Возвращает объект , |
GetGreatestMinimum(CalendarField) |
Возвращает максимальное минимальное значение для заданного поля календаря данного |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
GetInstance(Locale) |
Возвращает календарь, использующий часовой пояс по умолчанию и указанный языковой стандарт. |
GetInstance(TimeZone) |
Возвращает календарь, использующий указанный часовой пояс и языковой стандарт по умолчанию. |
GetInstance(TimeZone, Locale) |
Возвращает календарь с указанным часовой поясом и языковым стандартом. |
GetLeastMaximum(CalendarField) |
Возвращает наименьшее максимальное значение для заданного поля календаря данного |
GetMaximum(CalendarField) |
Возвращает максимальное значение для заданного поля календаря данного |
GetMinimum(CalendarField) |
Возвращает минимальное значение для заданного поля календаря данного |
InternalGet(Int32) |
Возвращает значение заданного поля календаря. |
IsSet(CalendarField) |
Определяет, имеет ли заданное поле календаря заданное значение, включая случаи, когда значение было задано с помощью внутренних вычислений полей, активированных вызовом |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
Notify() |
Пробуждает один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
Roll(CalendarField, Boolean) |
Добавляет или вычитает (вверх или вниз) одну единицу времени для заданного поля времени без изменения больших полей. |
Roll(CalendarField, Int32) |
Добавляет указанную (подписанную) сумму в указанное поле календаря без изменения больших полей. |
Set(CalendarField, Int32) |
Задает заданное поле календаря заданное значение. |
Set(Int32, Int32, Int32) |
Задает значения для полей |
Set(Int32, Int32, Int32, Int32, Int32) |
Задает значения для полей |
Set(Int32, Int32, Int32, Int32, Int32, Int32) |
Задает значения для полей , , , |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
SetWeekDate(Int32, Int32, Int32) |
Задает дату с |
ToArray<T>() |
Класс |
ToInstant() |
Класс |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
UnregisterFromRuntime() |
Класс |
Wait() |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.>< (Унаследовано от Object) |
Wait(Int64) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IComparable.CompareTo(Object) |
Класс |
IJavaPeerable.Disposed() |
Класс |
IJavaPeerable.DisposeUnlessReferenced() |
Класс |
IJavaPeerable.Finalized() |
Класс |
IJavaPeerable.JniManagedPeerState |
Класс |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Класс |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Класс |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Класс |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенного средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Класс |
GetJniTypeName(IJavaPeerable) |
Класс |