DateIntervalFormat Classe

Definição

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

[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
Herança
DateIntervalFormat
Atributos

Comentários

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma. Há suporte apenas para formatação. Não há suporte para análise.

Intervalo de data significa de uma data para outra, por exemplo, de "11 de janeiro de 2008" a "18 de janeiro de 2008". Introduzimos a classe DateInterval para representá-la. DateInterval é um par de UDate, que é o milissegundos padrão desde 24:00 GMT, 1 de janeiro de 1970.

DateIntervalFormat formata um DateInterval em texto da forma mais compacta possível. Por exemplo, o formato de intervalo de data de "11 de janeiro de 2008" a "Jan 18,. 2008" é "11-18 de janeiro de 2008" para inglês. E analisa o texto em DateInterval, embora inicialmente não haja suporte para análise.

Não há informações estruturais em padrões de data e hora. Para quaisquer pontuações e literais de cadeia de caracteres dentro de um padrão de data e hora, não sabemos se é apenas um separador, um prefixo ou um sufixo. Sem essas informações, portanto, é difícil gerar um sub padrão (ou super padrão) por algoritmo. Portanto, a formatação de um DateInterval é controlada por padrões. É muito semelhante à formatação em SimpleDateFormat. Apresentamos a classe DateIntervalInfo para salvar padrões de intervalo de data, semelhante ao padrão de hora de data em SimpleDateFormat.

Logicamente, os padrões de intervalo são mapeamentos de (esqueleto, the_largest_different_calendar_field) para (date_interval_pattern).

Um esqueleto <ol><li> mantém apenas a letra padrão de campo e ignora todas as outras partes em um padrão, como espaço, pontuações e literais de cadeia de caracteres. <Li> oculta a ordem dos campos. <li> pode ocultar o comprimento da letra padrão de um campo.

Para esses campos de calendário que não são dígitos, o comprimento da letra padrão é importante, como MMM, MMMM e MMMMM; EEE e EEEE, e o comprimento da letra padrão do campo é respeitado.

Para os campos de calendário de dígito, como M ou MM, d ou dd, yy ou yyyyyy, o comprimento do padrão de campo é ignorado e a melhor correspondência, que é definida em padrões de data e hora, será retornada sem honrar o comprimento da letra padrão de campo no esqueleto. </ol>

Os campos de calendário compatíveis com a formatação de intervalo são: ano, mês, data, dia da semana, am-pm, hora, hora, hora do dia, minuto e segundo (embora atualmente não tenhamos dados intervalFormat específicos para esqueletos com segundos). Esses campos de calendário podem ser definidos na seguinte ordem: ano > mês > data > hora (no dia) > minuto > segundo

Os maiores campos de calendário diferentes entre dois calendários são o primeiro campo de calendário diferente na ordem acima.

Por exemplo: os maiores campos de calendário diferentes entre "10 de janeiro de 2007" e "20 de fevereiro de 2008" é o ano.

Para outros campos de calendário, não há suporte para a formatação de intervalo compacto. E o formato de intervalo será recuado para padrões de fall-back, que é principalmente "{date0} - {date1}".

Há um conjunto de cadeias de caracteres de esqueleto estático predefinidos em DateFormat, há padrões de intervalo predefinidos para esses esqueletos predefinidos nos arquivos de recursos de localidades. Por exemplo, para um esqueleto YEAR_ABBR_MONTH_DAY, que é "yMMMd", em en_US, se o maior campo de calendário diferente entre data1 e data2 for "ano", o padrão de intervalo de data é "MMM d, yyyyy - MMM d, yyyyy", como "Jan 10, 2007 - Jan 10, 2008". Se o maior campo de calendário diferente entre data1 e data2 for "mês", o padrão de intervalo de data será "MMM d - MMM d, yyyyyy", como "10 de janeiro a 10 de fevereiro de 2007". Se o maior campo de calendário diferente entre data1 e data2 for "dia", o padrão de intervalo de data será "MMM d-d, yyyyy", como "10 a 20 de janeiro de 2007".

Para o esqueleto de data, os padrões de intervalo quando ano, mês ou data é diferente são definidos em arquivos de recurso. Para esqueleto de tempo, os padrões de intervalo quando am/pm, hora ou minuto é diferente são definidos em arquivos de recurso.

Se um esqueleto não for encontrado no DateIntervalInfo de uma localidade, o que significa que os padrões de intervalo para o esqueleto não estão definidos no arquivo de recurso, o padrão de intervalo retornará ao padrão de "fallback" de intervalo definido no arquivo de recurso. Se o padrão "fallback" do intervalo não estiver definido, o fall-back padrão será "{date0} - {data1}".

Para a combinação de data e hora, a regra para genearte padrões de intervalo são: <ol><li> quando o ano, o mês ou dia difere, volta para o padrão de intervalo de fall-back, que é principalmente concatenar as duas expressões originais com um separador entre, por exemplo, o padrão de intervalo de "Jan 10, 2007 10:10 am" a "Jan 11, 2007 10:10am" é "Jan 10, 2007 10:10 - 11 de janeiro de 2007 10:10am" <li> caso contrário, apresente a data seguida pela expressão de intervalo para a hora. Por exemplo, o padrão de intervalo de "Jan 10, 2007 10:10 am" a "Jan 10, 2007 11:10am" é "Jan 10, 2007 10:10 am - 11:10am" </ol>

Se duas datas forem as mesmas, o padrão de intervalo será o padrão de data única. Por exemplo, o padrão de intervalo de "Jan 10, 2007" a "Jan 10, 2007" é "Jan 10, 2007".

Ou se os campos de apresentação entre 2 datas tiverem exatamente os mesmos valores, o padrão de intervalo será o padrão de data única. Por exemplo, se o usuário solicitar somente ano e mês, o padrão de intervalo de "10 de janeiro de 2007" a "20 de janeiro de 2007" será "Jan 2007".

DateIntervalFormat precisa das seguintes informações para formatação correta: fuso horário, tipo de calendário, padrão, símbolos de formato de data e padrões de intervalo de data. Ele pode ser instanciado de várias maneiras: <ol><li> criar uma instância usando o padrão ou determinada localidade e determinado esqueleto. Os usuários são incentivados a criar o formatador de intervalo de data dessa forma e usar as macros de esqueleto predefinidas, como YEAR_NUM_MONTH, que consiste nos campos de calendário e no estilo de formato. </li li><> criar uma instância usando a localidade padrão ou determinada mais um esqueleto determinado, além de um determinado DateIntervalInfo. Esse método de fábrica é para usuários poderosos que desejam fornecer seus próprios padrões de intervalo. A localidade fornece as informações de fuso horário, calendário e formato de símbolos. O esqueleto de adição local fornece informações de padrão completo. DateIntervalInfo fornece os padrões de intervalo de data. </li></ol>

Para a letra padrão do campo de calendário, como G, y, M, d, a, h, H, m, s etc. DateIntervalFormat usa a mesma sintaxe que a do formato DateTime.

Exemplo de código: uso geral

// 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());

Exemplo de código: para usuários poderosos que desejam usar seu próprio padrão de intervalo

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);


<Sincronização> h3</h3>

Os métodos de formato de DateIntervalFormat podem ser usados simultaneamente de vários threads. As funções que alteram o estado de um objeto DateIntervalFormat (setters) podem não ser usadas simultaneamente com outras funções.

Java documentação para android.icu.text.DateIntervalFormat.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Construtores

Nome Description
DateIntervalFormat(IntPtr, JniHandleOwnership)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

Propriedades

Nome Description
Class

Retorna a classe de runtime deste Object.

(Herdado de Object)
DateFormat

Obtém o formatador de data

DateIntervalInfo

Obtém os padrões de intervalo de data e hora. -ou- Defina os padrões de intervalo de data/hora.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
JniIdentityHashCode

Obtém o código de hash de identidade atribuído a esse par Java pelo runtime de interoperabilidade.

(Herdado de Object)
JniManagedPeerState

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
JniPeerMembers

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

PeerReference

Obtém a referência de objeto JNI para este par Java.

(Herdado de Object)
ThresholdClass

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

ThresholdType

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

TimeZone

Obtenha o TimeZone -ou- Defina o TimeZone para o calendário usado por este objeto DateIntervalFormat.

Métodos

Nome Description
Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de _Format)
Construct(JniObjectReference, JniObjectReferenceOptions)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
Dispose()

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
Dispose(Boolean)

Libera os recursos mantidos por esse par Java.

(Herdado de Object)
DisposeUnlessReferenced()

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
Equals(Object)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
Equals(Object)

Indica se algum outro objeto é "igual a" este.

(Herdado de Object)
Format(Calendar, Calendar, StringBuffer, FieldPosition)

Formatar dois calendários para produzir uma cadeia de caracteres.

Format(DateInterval, StringBuffer, FieldPosition)

Formate um DateInterval para produzir uma cadeia de caracteres.

Format(Object, StringBuffer, FieldPosition)

Formate um objeto para produzir uma cadeia de caracteres.

Format(Object)

Formata um objeto para produzir uma cadeia de caracteres.

(Herdado de _Format)
FormatToCharacterIterator(Object)

Formata um objeto que produz um AttributedCharacterIterator.

(Herdado de _Format)
FormatToValue(Calendar, Calendar)

Formatar dois calendários para produzir um FormattedDateInterval.

FormatToValue(DateInterval)

Formate um DateInterval para produzir um FormattedDateInterval.

GetContext(DisplayContext+Type)

[UTI] Obtenha o valor DisplayContext do formatador para o DisplayContext.Type especificado, como CAPITALIZATION.

GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetInstance(String, DateIntervalInfo)

Construa um DateIntervalFormat do esqueleto DateIntervalInfo e a localidade padrão FORMAT .

GetInstance(String, Locale, DateIntervalInfo)

Construa um DateIntervalFormat do esqueleto de um DateIntervalInfo e a localidade fornecida.

GetInstance(String, Locale)

Construa um DateIntervalFormat de esqueleto e uma determinada localidade.

GetInstance(String, ULocale, DateIntervalInfo)

Construa um DateIntervalFormat do esqueleto de um DateIntervalInfo e a localidade fornecida.

GetInstance(String, ULocale)

Construa um DateIntervalFormat de esqueleto e uma determinada localidade.

GetInstance(String)

Construa um DateIntervalFormat a partir do esqueleto e da localidade padrão FORMAT .

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
ParseObject(String, ParsePosition)
Obsoleto.

Não há suporte para a análise de intervalo de data.

ParseObject(String)

Analisa o texto desde o início da cadeia de caracteres fornecida para produzir um objeto.

(Herdado de _Format)
SetContext(DisplayContext)

<strong>[icu]</strong> Definir um valor DisplayContext específico no formatador, como CAPITALIZATION_FOR_STANDALONE.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle

(Herdado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
ToArray<T>()

Cria uma matriz gerenciada com base nesse wrapper de matriz Java.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Cancela o registro desse par Java do runtime de interoperabilidade.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até ser despertado, normalmente por ser <notificado/em> ou <em>interrompido</em>.<>

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente por ser <>notificado</em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
IJavaPeerable.Disposed()

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
IJavaPeerable.Finalized()

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de JavaObject)
IJavaPeerable.UnregisterFromRuntime()

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

(Herdado de _Format)

Métodos de Extensão

Nome Description
GetJniTypeName(IJavaPeerable)

Obtém o nome JNI do tipo da instância self.

JavaAs<TResult>(IJavaPeerable)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo marcada por runtime do Android.

JavaCast<TResult>(IJavaObject)

DateIntervalFormat é uma classe para formatação e análise de intervalos de data de maneira independente do idioma.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Tente coagir a digitar selfTResult, verificando se a coerção é válida no lado Java.

Aplica-se a