Fecha y hora como datos de serie de caracteres

En esta sección se proporciona información sobre cómo puede especificar el formato de fecha y hora como una serie de letras con un patrón.

Cuando convierte una fecha u hora a una serie, se puede aplicar un patrón de formato que dirija la conversión. Esto se aplica si se da formato de una fecha o una hora a una serie o se analiza una serie como una fecha u hora.

Durante el formato (por ejemplo, de una fecha y hora a una serie de caracteres) se sustituye un patrón o un conjunto de símbolos por su origen equivalente. La Figura 1 ofrece una representación de cómo se aplica esto.

Figura 1. Utilizando un patrón para dar formato a un origen de fecha y hora para generar una salida de serie.

Cuando se analiza una serie (por ejemplo para convertirla en una fecha y hora), se utiliza el patrón o el conjunto de símbolos para determinar qué parte de la fecha y hora de destino queda representada por qué parte de la serie de caracteres. La Figura 2 proporciona una representación de cómo se aplica esto.

Figura 2. Utilización de un patrón para analizar un origen de serie de caracteres con el que generar una salida de fecha y hora.

Sintaxis

El patrón de la expresión se define mediante:

   .--------------.
   | .- -.        |
   V V   |        |
  >------+-símbolo-+->
         '-serie de caracteres-'

donde:
símbolo
es un carácter del juego de caracteres adDeEFGhHIkKmMsSTUwWyYzZ.
serie de caracteres
es una secuencia de caracteres encerrada entre comillas simples. Si se necesita comillas simples en la serie de caracteres, se puede encerrar entre comillas dobles, “''”.

Caracteres para dar a la fecha y hora el formato de una serie de caracteres

La tabla siguiente lista los caracteres permitidos que se pueden utilizar en un patrón para dar formato o para analizar series de caracteres en relación con una fecha y hora.

Símbolo Significado Presentación Ejemplos
a marcador de AM o PM Texto Entrada am, AM, pm, PM. Salida AM o PM
d día del mes (1-31) Número 1, 20
dd día del mes (01-31) Número 01, 31
D día del año (1-366) Número 3, 80, 100
DD día del año (01-366) Número 03, 80, 366
DDD día del año (001-366) Número 003
e día de la semana (1 a 7) Número 26
EEE día de la semana Texto Mar
EEEE día de la semana Texto Martes
F día de la semana del mes (1-5) Número 2 (para el segundo miércoles de Julio)3
G Era Texto BC o AD
h hora AM o PM (1 a 12) Número 6
hh hora en am o pm (01-12) Número 06
H hora del día en formato de 24 horas (0-23) Número 77
HH hora del día en formato de 24 horas (00-23) Número 077
I Fecha/hora ISO8601 (hasta yyyy-MM-dd'T'HH:mm:ss.SSSZZZ) texto 2004-10-07T12:06:56.568+01:005
IU Fecha/hora ISO8601 (igual que la anterior, pero ZZZ con la salida "Z" si el huso horario es +00:00) texto 2004-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z 5
k hora del día en formato de 24 horas (1-24) Número 87
k hora del día en formato de 24 horas (01-24) Número 087
K hora AM o PM (0 a 11) Número 9
KK hora en am o pm (00-11) Número 09
m minuto Número 4
mm minuto Número 04
M número del mes Número 5, 12
MM número del mes Número 05, 12
MMM nombre del mes Texto Ene, Feb
MMMM nombre del mes Texto Enero, Febrero
s segundos Número 5
ss segundos Número 05
S décimas de segundos Número 78
SS centésimas de segundo Número 708
SSS milisegundos 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
T Hora ISO8601 (hasta HH:mm:ss.SSSZZZ) texto 12:06:56.568+01:005
TU Hora ISO8601 (igual que la anterior pero el huso horario de +00:00 se sustituye por 'Z') texto 12:06:56.568+01:00, 15:42:12.000Z5
w semana del año Número 7, 532
ww semana del año Número 07, 532
W semana del mes Número 24
yy año Número 961
yyyy año Número 19961
YY año: utilizar sólo con semana del año Número 962
YYYY año: utilizar sólo con semana del año Número 19962
zzz huso horario (nombre abreviado) Texto gmt
zzzz huso horario (nombre completo) Texto Hora media de Greenwich
Z huso horario (+/-n) Texto +3
ZZ huso horario (+/-nn) Texto +03
ZZZ huso horario (+/-nn:nn) Texto +03:00
ZZZU huso horario (igual que ZZZ, se sustituye "+00:00" por "Z") Texto +03:00, Z
ZZZZ huso horario (GMT+/-nn:nn) Texto GMT+03:00
ZZZZZ huso horario (igual que ZZZ, pero sin el signo de dos puntos) (+/-nnnn) Texto +0300
' escape para texto   'Texto de usuario'
'' (dos comillas simples) comillas simples en el texto de escape   'en''punto'

La presentación del objeto de fecha y hora depende de los símbolos que especifique del modo que se indica a continuación:

Notas: Los puntos siguientes explican las notas de la tabla anterior:
  1. El año se maneja como un caso especial:
    • En la salida, si la cuenta de y es 2, se trunca el año a 2 dígitos. Por ejemplo, si yyyy produce 1997, yy producirá 97.
    • En la entrada, para los años de dos dígitos se utiliza la propiedad del conjunto de mensajes físico Principio de siglo para años de 2 dígitos para determinar el siglo. Por ejemplo, si se establece Principio de siglo para años de 2 dígitos en 53, el año 97 es 1997, el año 52 es 2052 y el año 53 es 1953.
  2. El inicio de un año suele estar en medio de una semana. Si el número de días de dicha semana es inferior al valor especificado por la propiedad Días de la primera semana del año establecida en el conjunto de mensajes, se considera la última semana del año anterior. Por lo tanto, la semana 1 comienza en algunos días incluidos en el año nuevo. De lo contrario, se considera la primera semana del año nuevo; de este modo la semana 1 empieza unos días antes del inicio del año nuevo. Por ejemplo, el lunes de la semana 1 de 2004 (2004 01 Lunes, en la que los días de la primera semana del año = 4 y el primer día de la semana = Lunes ) con el formato de serie de caracteres YYYY ww EEEE es de hecho el 29 de diciembre de 2003. Si utiliza Y, el día de la semana (E) y la semana del año (w) se ajustan, si es necesario, para indicar que la fecha corresponde al año anterior.

    Si utiliza el símbolo y, no se realiza el ajuste y se pueden producir resultados imprevisibles para las fechas que están próximas al fin de año. Por ejemplo, si se formatea la serie 2002 01 Lunes:

    • El lunes de la semana 1 de 2002 con el formato de serie de caracteres YYYY ww EEEE se interpreta correctamente como el 31 de diciembre de 2001
    • El lunes de la semana 1 de 2002 con el formato de serie de caracteres yyyy ww EEEE se interpreta incorrectamente como el 30 de diciembre de 2002

    Y sólo se deberá utilizar conjuntamente con w. Si especifica Y sin w, se ignora el año. Por ejemplo, si especifica YYYY-MM-dd para dar formato a 1996-03-01, el resultado es 2005-03-01 porque se ignora la entrada del año y se presupone el año actual.

  3. El 11 de julio de 2001 es el segundo miércoles de julio y se puede expresar como 2001 julio miércoles 2 utilizando la serie de formato yyyy MMMM EEEE F. Esto no es lo mismo que el miércoles de la semana 2 de julio de 2001, que es el 4 de julio de 2001.
  4. Es posible que la primera y la última semana de un mes incluyan días de meses contiguos. Por ejemplo, Martes 31 de julio de 2001 se puede expresar como Martes de la semana uno de agosto de 2001, que es 2001 08 1 Martes utilizando la serie de formato yyyy MM W EEEE.
  5. Consulte la sección sobre Símbolos de fecha y hora ISO8601, I y T.
  6. El campo del día de la semana es el desplazamiento numérico en una semana y variará dependiendo del valor de la propiedad del conjunto de mensajes física Primer día de la semana. Por ejemplo, el tercer día de la semana será el miércoles cuando la propiedad del conjunto de mensajes físico Primer día de la semana se establece en lunes.
  7. Los campos de 24 horas pueden dar como resultado una hora ambigua si se especifica un campo am/pm conflictivo.
  8. La longitud de las fracciones de segundos debe coincidir implícitamente con le número de símbolos de formato de la entrada. La salida se redondea hasta la longitud especificada.
  9. Los husos horarios largos funcionan mejor cuando se utilizan en el formato Continente/Ciudad. Del mismo modo, en sistemas Unix, la variable de entorno TZ se debe especificar utilizando el formato Continente/Ciudad.

Símbolos de fecha y hora ISO8601, I y T

Si los valores de fecha y hora son compatibles con el estándar ISO8601:2000 para la representación de fechas y horas, debe considerar si es posible utilizar los símbolos de formato I y T. Estos coinciden específicamente con un subconjunto de ISO8601.

Estos símbolos sólo se pueden utilizar por su cuenta.

En la salida, se aplicará el formato siguiente dependiendo del tipo y hora lógico:

Tipo de datos MRM lógico Tipo de datos ESQL lógico Formato de salida
xsd:dateTime TIMESTAMP o GMTTIMESTAMP yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
xsd:date DATE aaaa-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:
  • En la salida tanto I como T aceptan '+00:00' y 'Z' para indicar una diferencia horaria de cero de la hora UTC (Coordinated Universal Time) pero en la salida siempre se genera '+00:00'. Si requiere que en la salida se genere siempre 'Z', debe utilizar los símbolos de formato IU o TU alternativos.
  • ZZZ siempre generará '+00:00' en la salida para indicar una diferencia horaria de cero con respecto a la hora UTC (Coordinated Universal Time). Si requiere que en la salida se genere siempre 'Z', debe utilizar el formato ZZZU alternativo.

Utilizando el formato UTC en la salida

Un elemento o atributo de tipo lógico xsd:dateTime o xsd:time que contiene una fecha y hora como una serie de caracteres puede especificar la hora UTC (Coordinated Universal Time) utilizando el carácter Z o el huso horario +00:00. En la entrada, el analizador MRM recuerda el formato UTC de estos elementos y atributos. En la salida, puede especificar si deben aparecer Z o +00:00 utilizando la propiedad de formato de fecha y hora del elemento o atributo. Alternativamente puede conservar el formato UTC de la entrada seleccionando la propiedad del conjunto de mensajes Utilizar formato UTC de entrada en la salida. Si se selecciona esta propiedad, entonces se conservará el formato UTC en el mensaje de salida y se alterará temporalmente el implícito en la propiedad de formato de fecha y hora.

Ejemplos

La tabla siguiente muestra algunos ejemplos de formato de fecha y hora:

Patrón de formato Resultado
"yyyy.MM.dd'a las'HH:mm:ss ZZZ" 1996.07.10 a las 15:08:56 -05:00
EEE, MMM d, "yy" Mié, Julio 10, '96
"h:mm a" 8:08 PM
"hh 'en punto' a, ZZZZ" 09 en punto AM, GMT+09:00
"K:mm a, ZZZ" 9:34 AM, -05:00
"yyyy.MMMMM.dd hh:mm aaa" 1996.Julio.10 12:08 PM
Conceptos relacionados
Modelado de mensajes
El modelo de mensaje
Tareas relacionadas
Desarrollo de modelos de mensaje
Cómo trabajar con un archivo de definición de mensajes
Cómo trabajar con objetos de modelo de mensaje
Referencia relacionada
Información de referencia de modelo de mensaje
Propiedades de objeto de modelo de mensaje
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ad09291_