DateTime como Dados de Cadeia

Esta seção fornece informações sobre como especificar o formato dateTime utilizando uma cadeia de letras padrão.

Quando estiver convertendo uma data ou hora em uma cadeia, poderá ser aplicado um padrão de formato que direcione a conversão. Isto se aplicaria se você estivesse formatando de uma data ou hora para uma cadeia ou analisando uma cadeia para uma data ou hora.

Durante a formatação (por exemplo, um dateTime para uma cadeia) um padrão ou um conjunto de tokens é substituído por sua origem equivalente. A Figura 1 fornece uma representação de como isto é aplicado.

Figura 1. Utilizando um Padrão para Formatar uma Origem dateTime para Produzir uma Saída de Cadeia.

Quando uma cadeia é analisada (por exemplo, convertendo-a em um dateTime), o padrão ou conjunto de tokens é utilizado para determinar qual parte do dateTime de destino é representada por qual parte da cadeia. A Figura 2 fornece uma representação de como isto é aplicado.

Figura 2. Utilizando um Padrão para Analisar uma Origem de Cadeia para Produzir uma Saída dateTime.

Sintaxe

O padrão da expressão é definido por:

   .--------------.
   | .- -.        |
   V V   |        |
  >------+-symbol-+->
         '-string-'

Em que:
symbol
é um caractere no conjunto adDeEFGhHIkKmMsSTUwWyYzZ.
string
é uma seqüência de caracteres entre aspas simples. Se for requerida uma aspa simples na cadeia, poderão ser utilizadas duas aspas simples, "''",.

Caracteres para Formatar um dateTime como uma Cadeia

A tabela a seguir lista os caracteres permitidos que podem ser utilizados em um padrão para formatar ou analisar cadeias em relação a um dateTime.

Símbolo Significado Apresentação Exemplos
a marcador am ou pm Texto Entrada am, AM, pm, PM. Saída AM ou PM
d dia do mês (1-31) Número 1, 20
dd dia do mês (01-31) Número 01, 31
D dia do ano (1-366) Número 3, 80, 100
DD dia do ano (01-366) Número 03, 80, 366
DDD dia do ano (001-366) Número 003
e dia na semana (1-7) Número 26
EEE dia na semana Texto Ter
EEEE dia na semana Texto Terça-feira
F dia da semana no mês (1-5) Número 2 (para a segunda quarta-feita de julho)3
G Era Texto BC ou AD
h hora em am ou pm (1-12) Número 6
hh hora em am ou pm (01-12) Número 06
I hora do dia em formato de 24 horas (0-23) Número 77
HH hora do dia em formato de 24 horas (00-23) Número 077
I Data/Hora ISO8601 (até yyyy-MM-dd'T'HH:mm:ss. SSSZZZ) text 2004-10-07T12:06:56.568+01:005
IU Data/Hora ISO8601 (conforme acima, mas ZZZ com a saída "Z" se o fuso horário for +00:00) text 2004-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z 5
k hora do dia em formato de 24 horas (1-24) Número 87
k hora do dia em formato de 24 horas (01-24) Número 087
K hora em am ou pm (0-11) Número 9
KK hora em am ou pm (00-11) Número 09
m minute Número 4
mm minute Número 04
M mês numérico Número 5, 12
MM mês numérico Número 05, 12
MMM mês denominado Texto Jan, Fev
MMMM mês denominado Texto Janeiro, Fevereiro
s segundos Número 5
ss segundos Número 05
S décimo de segundo Número 78
SS centésimo de segundo Número 708
SSS milissegundo Número 7008
SSSS 1/10.000 de segundos Número 70008
SSSSS 1/100.000 de segundos Número 700008
SSSSSS 1/1.000.000 de segundos Número 7000008
E Hora ISO8601 (até HH:mm:ss.SSSZZZ) text 12:06:56.568+01:005
TU Hora ISO8601 (conforme acima, mas um fuso horário de +00:00 é substituído por 'Z') text 12:06:56.568+01:00, 15:42:12.000Z5
w semana no ano Número 7, 532
ww semana no ano Número 07, 532
W semana no mês Número 24
yy ano Número 961
yyyy ano Número 19961
YY ano: utilizar apenas com semana no ano Número 962
YYYY ano: utilizar apenas com semana no ano Número 19962
zzz fuso horário (nome abreviado) Texto gmt
zzzz fuso horário (nome completo) Texto Hora de Greenwich
Z fuso horário (+/-n) Texto +3
ZZ fuso horário (+/-nn) Texto +03
ZZZ fuso horário (+/-nn:nn) Texto +03:00
ZZZU fuso horário (como ZZZ, "+00:00" é substituído por "Z") Texto +03:00, Z
ZZZZ fuso horário (GMT+/-nn:nn) Texto GMT+03:00
ZZZZZ fuso horário (como ZZZ, mas sem dois pontos) (+/-nnnn) Texto +0300
' escape para texto   'Texto do usuário'
'' (duas aspas simples) aspas simples no texto de escape   'o''clock'

A apresentação do objeto dateTime depende de quais símbolos são especificados da seguinte forma:

Notas: Os pontos a seguir explicam as notas na tabela acima:
  1. O ano é tratado de forma especial:
    • Na saída, se a contagem de y for 2, o ano será truncado para 2 dígitos. Por exemplo, se yyyy produzir 1997, yy produzirá 97.
    • Na entrada, para anos de 2 dígitos, a propriedade do conjunto de mensagens físico Início de século para anos de 2 dígitos é utilizado para determinar o século. Por exemplo, se Início de século para anos de 2 dígitos for configurado para 53, o ano 97 é 1997, o ano 52 é 2052 e o ano 53 é 1953.
  2. O início de um ano geralmente está na metade de uma semana. Se o número de dias dessa semana for inferior ao valor especificado pela propriedade Dias da Primeira Semana do Ano do conjunto de mensagens físicas, a semana será considerada como a última semana do ano anterior; portanto, a semana 1 começa alguns dias após o ano novo. De outra maneira, ela será considerada a primeira semana do ano novo; portanto, a semana 1 começará alguns dias antes do ano novo. Por exemplo, segunda-feira da semana 1 de 2004 (2004 01 segunda-feira, em que Dias da Primeira Semana do Ano = 4 e Primeiro Dia da Semana = segunda-feira), utilizando a cadeia de formatações YYYY ww EEEE é na verdade 29 de dezembro de 2003. Se você utilizar Y, o dia da semana (E) e a semana no ano (w) serão ajustados, se necessário, para indicar que a data cai no ano anterior.

    Se você utilizar o símbolo y, o ajuste não será feito e podem ocorrer resultados imprevisíveis para datas próximas do final do ano.Por exemplo, se a cadeia Segunda-feira 01 2002 estiver formatada:

    • A segunda-feira da semana 1 de 2002, utilizando a cadeia de formatações YYYY ww EEEE é interpretada corretamente como 31 de dezembro de 2001
    • A segunda-feira da semana 1 de 2002, utilizando a cadeia de formatações yyyy ww EEEE é interpretada incorretamente como 30 de dezembro de 2002

    Y deve ser utilizado apenas junto com w. Se você especificar Y sem w, o ano será ignorado. Por exemplo, se você especificar YYYY-MM-dd para o formato 1996-03-01, o resultado será 2005-03-01, porque a entrada do ano será ignorada e o ano atual será assumido.

  3. O dia 11 de julho de 2001 é a segunda quarta-feira de julho é pode ser expresso como Quarta-feira, 2 de julho de 2001 utilizando a cadeia de formatações yyyy MMMM EEEE F. Este formato não é igual à quarta-feira na semana 2 de julho de 2001, que é 4 de julho de 2001.
  4. A primeira e a última semanas em um mês podem incluir dias de meses próximos. Por exemplo, terça-feira, 31 de julho de 2001 pode ser expresso como Terça-feira na semana um de agosto de 2001, que é Terça-feira, 1 08 2001 utilizando a cadeia de formatações yyyy MM W EEEE.
  5. Consulte a seção ISO8601, tokens DateTime I e T.
  6. O campo dia da semana é o deslocamento numérico em uma semana e variará conforme o valor da propriedade Primeiro Dia da Semana do conjunto de mensagens físicas. Por exemplo, o terceiro dia da semana seria quarta-feira quando a propriedade Primeiro dia da Semana do conjunto de mensagens físicas estiver configurada para segunda-feira.
  7. Campos de 24 horas podem resultar em um horário ambíguo se especificado com um campo am/pm conflitante.
  8. Segundos Fracionários - O comprimento deve corresponder implicitamente ao número de símbolos de formato na entrada. A saída é arredondada para o comprimento especificado.
  9. Fuso horários longos funcionam melhor quando utilizados no formato Continente/Cidade. De forma semelhante, nos sistemas Unix, a variável de ambiente TZ deve ser especificada utilizando-se o formato Continente/Cidade.

ISO8601, tokens DateTime I e T

Se os valores de dateTime concordarem com o Padrão de 'Representação de Datas e Horas' ISO8601:2000, você deve considerar se é possível utilizar os símbolos de formatação I e T. Eles correspondem a um subconjunto do padrão ISO8601, especificamente:

Esses símbolos devem ser utilizados apenas sozinhos.

Na saída, o seguinte formato será aplicado, dependendo no tipo de dados lógico:

Tipo de Dados Lógico MRM Tipo de Dados Lógico ESQL Formato de Saída
xsd:dateTime TIMESTAMP ou GMTTIMESTAMP yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
xsd:date DATE yyyy-MM-dd
xsd:gYear INTERVAL yyyy
xsd:gYearMonth INTERVAL yyyy-MM
xsd:gMonth INTERVAL --MM
xsd:gmonthDay INTERVAL --MM-dd
xsd:gDay INTERVAL ---dd
xsd:time TIME / GMTTIME 'T'HH:mm:ss.SSSZZZ
Nota:
  • Na entrada, I e T aceitam '+00:00' e 'Z' para indicar uma diferença de tempo zero do UTC (Coordinated Universal Time)), mas na saída gerará sempre'+00:00'. Se requerer que 'Z' seja sempre gerado na saída, você deve utilizar os símbolos de formatação alternativos IU ou TU.
  • ZZZ sempre gerará a saída '+00:00' para indicar uma diferença de tempo zero do UTC (Coordinated Universal Time). Se requerer que 'Z' seja sempre gerado na saída, você deve utilizar o formato ZZZU alternativo.

Utilizando o Formato UTC de Entrada na Saída

Um elemento ou atributo de tipo lógico xsd:dateTime ou xsd:time que contém um dateTime como uma cadeia pode especificar UTC (Consolidated Universal Time) utilizando o caractere Z ou o fuso horário +00:00. Na entrada, o analisador MRM lembra o formato UTC de tais elementos e atributos. Na saída, você pode especificar se Z ou +00:00 deve aparecer, utilizando a propriedade de formato dateTime do elemento ou atributo. Como alternativa, você pode preservar o formato UTC de entrada, verificando a propriedade do conjunto de mensagens Utilizar Formato de Entrada UTC na Saída. Se essa propriedade for verificada, o formato UTC será preservado na mensagem de saída e substituirá o deduzido pela propriedade de formato dateTime.

Exemplos

A tabela a seguir mostra alguns exemplos de formatos dateTime:

Padrão de formato Resultado
"yyyy.MM.dd'at'HH:mm:ss ZZZ" 1996.07.10 às 15:08:56 -05:00
EEE, MMM d, "yy" Qua, 10 julho, '96
"h:mm a" 8:08 h
"hh 'o''clock' a, ZZZZ" 09:00 h, GMT+09:00
"K:mm a, ZZZ" 9:34 AM, -05:00
"yyyy.MMMMM.dd hh:mm aaa" 1996.julho.10 12:08 h
Conceitos relacionados
Modelagem de Mensagens
O Modelo de Mensagem
Tarefas relacionadas
Desenvolvendo Modelos de Mensagens
Trabalhando com um Arquivo de Definição de Mensagem
Trabalhando com Objetos de Modelo de Mensagem
Referências relacionadas
Informações de Referência do Modelo de Mensagens
Propriedades do Objeto de Modelo de Mensagem
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ad09291_