DateIntervalFormat Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка.
[Android.Runtime.Register("android/icu/text/DateIntervalFormat", ApiSince=24, DoNotGenerateAcw=true)]
public class DateIntervalFormat : Android.Icu.Text.UFormat
[<Android.Runtime.Register("android/icu/text/DateIntervalFormat", ApiSince=24, DoNotGenerateAcw=true)>]
type DateIntervalFormat = class
inherit UFormat
- Наследование
- Атрибуты
Комментарии
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. Поддерживается только форматирование. Синтаксический анализ не поддерживается.
Интервал даты означает от одной даты до другой даты, например от "11 января 2008 года" до "18 января 2008 года". Мы представили класс DateInterval, чтобы представить его. DateInterval — это пара UDate, которая является стандартной миллисекундами с 24:00 GMT, 1 января 1970 года.
DateIntervalFormat форматирует DateInterval в текст как можно более компактно. Например, формат интервала даты от "11 января 2008 года" до "18 января". 2008 год — "11-18 января 2008 года" для английского языка. И он анализирует текст в DateInterval, хотя изначально синтаксический анализ не поддерживается.
Структурные сведения в шаблонах времени даты отсутствуют. Для любых знаков препинания и строковых литералов в шаблоне времени даты мы не знаем, является ли он просто разделителем, префиксом или суффиксом. Без такой информации, поэтому сложно создать подшаблоны (или супер-шаблон) по алгоритму. Таким образом, форматирование DateInterval зависит от шаблона. Это очень похоже на форматирование в SimpleDateFormat. Мы представляем класс DateIntervalInfo для сохранения шаблонов интервалов даты, аналогичных шаблону даты и времени в SimpleDateFormat.
Логически шаблоны интервалов — это сопоставления (скелет, the_largest_different_calendar_field) с (date_interval_pattern).
Скелет <ol><li> сохраняет только букву шаблона поля и игнорирует все остальные части в шаблоне, такие как пробелы, знаки препинания и строковые литералы. <li> скрывает порядок полей. <li> может скрыть длину буквы шаблона поля.
Для этих незначных полей календаря длина буквы шаблона важна, например MMM, MMMM и MMMMM; EEE и EEEE, а длина буквы шаблона поля учитывается.
Для полей календаря цифр, таких как M или MM, d или dd, yy или гггг, длина шаблона поля игнорируется и лучшее совпадение, определенное в шаблонах даты, будет возвращено без учета длины буквы шаблона поля в скелете. </Пр>
Поля календаря, поддерживаемые для форматирования интервалов: год, месяц, дата, день недели, am-pm, час, час, час, минута и вторая (хотя у нас нет определенных интервалов для скелетов с секундами). Эти поля календаря можно определить в следующем порядке: год > месяц > дата > час (в день) > минута > второй
Самым большими полями календаря между 2 календарями является первое другое поле календаря в указанном выше порядке.
Например: самые большие поля календаря между "10 января 2007 года" и "20 февраля 2008 г. " годом.
Для других полей календаря форматирование компактных интервалов не поддерживается. И формат интервала будет возвращаться к резервным шаблонам, который в основном "{date0} - {date1}".
Существует набор предопределенных статических строк скелета в DateFormat, существуют предварительно определенные шаблоны интервалов для этих предварительно определенных скелетов в файлах ресурсов языковых стандартов. Например, для скелета YEAR_ABBR_MONTH_DAY, который является "yMMMd", в en_US, если наибольшее разное поле календаря между датой 1 и датой 2 — "год", интервал даты — MMM d, гггг - МММ d, гггг, гггг", например "10 января 2007 г. - 10 января 2008 г.". Если наибольшее поле календаря между датой 1 и датой 2 — "месяц", то шаблон интервала даты — MMM d, гггг, например "10 января 10 февраля 2007 г.". Если наибольшее поле календаря между датой 1 и датой 2 — day, то шаблон интервала даты — "MMM d-d, гггг", например "10-20 января 2007 года".
Для скелета даты шаблоны интервалов, когда год или месяц или дата отличаются в файлах ресурсов. Для скелета времени в файлах ресурсов определяются шаблоны интервалов, когда am/pm, час или минута или минута отличаются.
Если скелет не найден в dateIntervalInfo языкового стандарта, то есть шаблон интервала для скелета не определен в файле ресурсов, шаблон интервала возвращается к шаблону интервала , определенному в файле ресурсов. Если шаблон резервного копирования интервала не определен, резервная копия по умолчанию — {date0} — {data1}.
Для сочетания даты и времени, Правилом для шаблонов интервалов генеарта являются: <ol><li> , когда год, месяц или день отличается, возвращается к шаблону резервного интервала, который в основном является объединением двух исходных выражений с разделителем между, например, шаблон интервала от "10 января 2007 10:10 утра" до "11 января 2007 10:10 утра" является "10 января, 2007 10:10 – 11 января 2007 г. 10:10 утра " <в> противном случае представляет дату, за которой следует выражение диапазона в течение времени. Например, шаблон интервала от "10 января 2007 10:10 утра" до "10 января 2007 11:10 утра" — "10 января, 2007 10:10 утра - 11:10 утра" </ol>
Если две даты одинаковы, то шаблон интервала является одним шаблоном дат. Например, шаблон интервала от "10 января 2007 года" до "10 января 2007 года" — "10 января 2007 г.".
Или если в полях между 2 датами имеются одинаковые значения, то шаблон интервала является шаблоном одной даты. Например, если пользователь запрашивает только год и месяц, интервал от "10 января 2007 года" до "20 января 2007 года" — "Январь 2007".
Для правильного форматирования dateIntervalFormat требуется следующая информация: часовой пояс, тип календаря, шаблон, символы формата даты и шаблоны интервалов даты. Он может быть создан несколькими способами: <ol><li> создает экземпляр с помощью стандартного или заданного языкового стандарта и заданного скелета. Пользователям рекомендуется создать средство форматирования интервалов даты таким образом и использовать предварительно определенные макросы скелета, такие как YEAR_NUM_MONTH, состоящие из полей календаря и стиля формата. </li><> создает экземпляр, используя стандарт по умолчанию или заданный языковой стандарт, а также заданный скелет, а также заданный DateIntervalInfo. Этот метод фабрики предназначен для мощных пользователей, которые хотят предоставить собственные шаблоны интервалов. Языковой стандарт предоставляет сведения о часовом поясе, календаре и формате символов. Локальный плюс скелет предоставляет полные сведения о шаблонах. DateIntervalInfo предоставляет шаблоны интервалов даты. </li></ol>
Для буквы шаблона поля календаря, например G, y, M, d, a, h, H, m, s и т. д. DateIntervalFormat использует тот же синтаксис, что и формат DateTime.
Пример кода: общее использование
// the date interval object which the DateIntervalFormat formats on
// and parses into
DateInterval dtInterval = new DateInterval(1000*3600*24L, 1000*3600*24*2L);
DateIntervalFormat dtIntervalFmt = DateIntervalFormat.getInstance(
DateFormat.YEAR_MONTH_DAY, new Locale("en", "GB", ""));
StringBuffer result = new StringBuffer("");
FieldPosition pos = new FieldPosition(-1);
// formatting
dtIntervalFmt.format(dtInterval, result, pos);
assertEquals("interval", "1–2 January 1970", result.toString());
Пример кода: для мощных пользователей, которые хотят использовать собственный шаблон интервала
import android.icu.text.DateIntervalInfo;
import android.icu.text.DateIntervalFormat;
....................
// Get DateIntervalFormat instance using default locale
DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(YEAR_MONTH_DAY);
// Create an empty DateIntervalInfo object, which does not have any interval patterns inside.
dtitvinf = new DateIntervalInfo();
// a series of set interval patterns.
// Only ERA, YEAR, MONTH, DATE, DAY_OF_MONTH, DAY_OF_WEEK, AM_PM, HOUR, HOUR_OF_DAY,
MINUTE, SECOND and MILLISECOND are supported.
dtitvinf.setIntervalPattern("yMMMd", Calendar.YEAR, "'y ~ y'");
dtitvinf.setIntervalPattern("yMMMd", Calendar.MONTH, "yyyy 'diff' MMM d - MMM d");
dtitvinf.setIntervalPattern("yMMMd", Calendar.DATE, "yyyy MMM d ~ d");
dtitvinf.setIntervalPattern("yMMMd", Calendar.HOUR_OF_DAY, "yyyy MMM d HH:mm ~ HH:mm");
// Set fallback interval pattern. Fallback pattern is used when interval pattern is not found.
// If the fall-back pattern is not set, falls back to {date0} - {date1} if interval pattern is not found.
dtitvinf.setFallbackIntervalPattern("{0} - {1}");
// Set above DateIntervalInfo object as the interval patterns of date interval formatter
dtitvfmt.setDateIntervalInfo(dtitvinf);
// Prepare to format
pos = new FieldPosition(0);
str = new StringBuffer("");
// The 2 calendars should be equivalent, otherwise, IllegalArgumentException will be thrown by format()
Calendar fromCalendar = (Calendar) dtfmt.getCalendar().clone();
Calendar toCalendar = (Calendar) dtfmt.getCalendar().clone();
fromCalendar.setTimeInMillis(....);
toCalendar.setTimeInMillis(...);
//Formatting given 2 calendars
dtitvfmt.format(fromCalendar, toCalendar, str, pos);
<Синхронизация> h3/h3<>
Методы форматирования DateIntervalFormat могут использоваться одновременно из нескольких потоков. Функции, изменяющие состояние объекта DateIntervalFormat (setters), могут не использоваться одновременно с другими функциями.
Java документации по android.icu.text.DateIntervalFormat.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".
Конструкторы
| Имя. | Описание |
|---|---|
| DateIntervalFormat(IntPtr, JniHandleOwnership) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. |
Свойства
| Имя. | Описание |
|---|---|
| Class |
Возвращает класс среды выполнения этого |
| DateFormat |
Возвращает форматировщик дат |
| DateIntervalInfo |
Возвращает шаблоны интервала даты и времени. -или- Задайте шаблоны интервала времени даты. |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| JniIdentityHashCode |
Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия. (Унаследовано от Object) |
| JniManagedPeerState |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| JniPeerMembers |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. |
| PeerReference |
Возвращает ссылку на объект JNI для этого Java однорангового узла. (Унаследовано от Object) |
| ThresholdClass |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. |
| ThresholdType |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. |
| TimeZone |
Получите часовой пояс или задайте часовой пояс для календаря, используемого этим объектом DateIntervalFormat. |
Методы
| Имя. | Описание |
|---|---|
| Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| Dispose() |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| Dispose(Boolean) |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| DisposeUnlessReferenced() |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| Equals(Object) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
| Format(Calendar, Calendar, StringBuffer, FieldPosition) |
Форматирование 2 календарей для создания строки. |
| Format(DateInterval, StringBuffer, FieldPosition) |
Форматирование DateInterval для создания строки. |
| Format(ITemporal, ITemporal, StringBuffer, FieldPosition) |
Форматирование двух |
| Format(Object, StringBuffer, FieldPosition) |
Форматирование объекта для создания строки. |
| Format(Object) |
Форматирует объект для создания строки. (Унаследовано от _Format) |
| FormatToCharacterIterator(Object) |
Форматирует объект, создающий |
| FormatToValue(Calendar, Calendar) |
Формат 2 Календарей для создания formattedDateInterval. |
| FormatToValue(DateInterval) |
Форматирование DateInterval для создания FormattedDateInterval. |
| FormatToValue(ITemporal, ITemporal) |
Форматирование двух темпоральных данных для создания FormattedDateInterval. |
| GetContext(DisplayContext+Type) |
[icu] Получите значение DisplayContext средства форматирования для указанного объекта DisplayContext.Type, например CAPITALIZATION. |
| GetHashCode() |
Возвращает хэш-значение кода для объекта. (Унаследовано от Object) |
| GetInstance(String, DateIntervalInfo) |
Создайте DateIntervalFormat из скелета DateIntervalInfo и языкового стандарта по умолчанию |
| GetInstance(String, Locale, DateIntervalInfo) |
Создайте DateIntervalFormat из скелета DateIntervalInfo и заданного языкового стандарта. |
| GetInstance(String, Locale) |
Создайте DateIntervalFormat из скелета и заданного языкового стандарта. |
| GetInstance(String, ULocale, DateIntervalInfo) |
Создайте DateIntervalFormat из скелета DateIntervalInfo и заданного языкового стандарта. |
| GetInstance(String, ULocale) |
Создайте DateIntervalFormat из скелета и заданного языкового стандарта. |
| GetInstance(String) |
Создайте DateIntervalFormat из скелета и языкового стандарта по умолчанию |
| JavaFinalize() |
Устаревшие.
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
| Notify() |
Просыпается один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
| NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
| ParseObject(String, ParsePosition) |
Устаревшие.
Синтаксический анализ интервала даты не поддерживается. |
| ParseObject(String) |
Анализирует текст с начала заданной строки для создания объекта. (Унаследовано от _Format) |
| SetContext(DisplayContext) |
<strong>[icu]</strong> Set определенное значение DisplayContext в методе форматирования, например CAPITALIZATION_FOR_STANDALONE. |
| SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| ToArray<T>() |
Создает управляемый массив из этого Java оболочки массива. (Унаследовано от Object) |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия. (Унаследовано от Object) |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.> (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя. | Описание |
|---|---|
| IJavaPeerable.Disposed() |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| IJavaPeerable.Finalized() |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. (Унаследовано от _Format) |
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
DateIntervalFormat — это класс для форматирования и анализа интервалов даты независимо от языка. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |