Formattazione ed analisi di dateTimes come stringhe

Questa sezione fornisce informazioni relative al modo in cui è possibile specificare il formato dateTime utilizzando una stringa di lettere di modello.

Quando si converte una data o un'ora in una stringa, è possibile applicare un modello di formato per indirizzare la conversione. Ciò si applica se si esegue la formattazione di una data o di un'ora in una stringa o se si esegue l'analisi di una stringa in una data o un'ora.

Durante la formattazione (ad esempio, una data/ora in una stringa) un modello o una serie di token viene sostituita dall'origine equivalente. Nella figura 1 viene fornita una rappresentazione della modalità di applicazione.

Figura 1. Utilizzo di un modello per la formattazione di un'origine data/ora e la produzione di un output di stringa

Quando una stringa viene analizzata (ad esempio, quando viene convertita in data/ora), il modello o la serie di token viene utilizzata per determinare la parte della stringa che rappresenterà le parti data/ora di destinazione. Nella figura 2 viene fornita una rappresentazione della modalità di applicazione.

Figura 2. Utilizzo di un modello per l'analisi di una stringa di origine e la produzione di un output in formato data/ora

Sintassi

Il modello di espressione viene definito con la modalità riportata di seguito:

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

Dove:
simbolo
è un carattere nella serie adDeEFGhHIkKmMsSTUwWyYzZ.
stringa
è una sequenza di caratteri compresa in apici. Se in una stringa è richiesto un apice, è possibile utilizzare due apici, "''".

Caratteri di formattazione di una data/ora come stringa

Nella tabella riportata di seguito sono elencati i caratteri consentiti in un modello per effettuare la formattazione o l'analisi delle stringhe in relazione a una data/ora.

Simbolo Spiegazione Presentazione Esempi
a indicatore am o pm Testo am di input, AM, pm, PM. AM o PM di output.
d giorno del mese (1-31) Numero 1, 20
dd giorno del mese (01-31) Numero 01, 31
D giorno dell'anno (1-366) Numero 3, 80, 100
DD giorno dell'anno (01-366) Numero 03, 80, 366
DDD giorno dell'anno (001-366) Numero 003
e giorno della settimana (1-7) Numero 26
EEE giorno della settimana Testo Mar
EEEE giorno della settimana Testo Martedì
F giorno settimanale del mese (1-5) Numero 2 (per il secondo mercoledì di luglio)3
G Era Testo AC o DC
h ora in am o pm (1-12) Numero 6
hh ora in am o pm (01-12) Numero 06
H ora del giorno nel formato di 24 ore (0-23) Numero 77
HH ora del giorno nel formato di 24 ore (00-23) Numero 077
I ISO8601 data/ora (fino a yyyy-MM-dd'T'HH:mm:ss. SSSZZZ) Testo 2004-10-07T12:06:56.568+01:00 5
IU ISO8601 data/ora (come sopra, ma ZZZ con output "Z" se il fuso orario è +00:00) Testo 2004-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z 5
k ora del giorno nel formato di 24 ore (1-24) Numero 87
k ora del giorno nel formato di 24 ore (01-24) Numero 087
K ora in am o pm (0-11) Numero 9
KK ora in am o pm (00-11) Numero 09
m minuto Numero 4
mm minuto Numero 04
M mese in formato numerico Numero 5, 12
MM mese in formato numerico Numero 05, 12
MMM mese in formato nome Testo Gen, feb
MMMM mese in formato nome Testo Gennaio, febbraio
s secondi Numero 5
ss secondi Numero 05
S decimi di secondo Numero 78
SS centesimi di secondo Numero 708
SSS millisecondi Numero 7008
SSSS 1/10.000 di secondo Numero 70008
SSSSS 1/100.000 di secondo Numero 700008
SSSSSS 1/1.000.000 di secondo Numero 7000008
T ISO8601 Ora (fino a HH:mm:ss.SSSZZZ) Testo 12:06:56.568+01:005
TU ISO8601 Ora (come sopra, ma un fuso orario di +00:00 è sostituito da "Z") Testo 12:06:56.568+01:00, 15:42:12.000Z5
w settimana dell'anno Numero 7, 532
ww settimana dell'anno Numero 07, 532
W settimana del mese Numero 24
yy anno Numero 961
aaaa anno Numero 19961
YY anno: utilizzare solo con la settimana dell'anno Numero 962
YYYY anno: utilizzare solo con la settimana dell'anno Numero 19962
zzz fuso orario (abbreviazione) Testo gmt
zzzz fuso orario (nome completo) Testo Ora di Greenwich
Z fuso orario (+/-n) Testo +3
ZZ fuso orario (+/-nn) Testo +03
ZZZ fuso orario (+/-nn:nn) Testo +03:00
ZZZU fuso orario (come per ZZZ, ma "+00:00" è sostituito da "Z") Testo +03:00, Z
ZZZZ fuso orario (GMT+/-nn:nn) Testo GMT+03:00
ZZZZZ fuso orario (come per ZZZ, ma senza virgola) (+/-nnnn) Testo +0300
' testo in sequenza Escape   'Testo utente'
'' (due apici) apice nel testo in sequenza Escape   'o''clock'

La presentazione di un oggetto dateTime dipende dai simboli specificati, come riportato di seguito:

Note: di seguito vengono riportate le note alla tabella riportata sopra:
  1. L'anno è considerato un caso speciale:
    • Nell'output, se il conteggio di y è 2, l'anno è troncato a 2 cifre. Ad esempio, se con yyyy viene prodotto 1997, con yy viene prodotto 97.
    • Nell'input, per gli anni composti da 2 cifre, la Finestra secolo è fissata a 53. Ad esempio, la data di input 52 ha come risultato il valore dell'anno 2052, mentre 53 fornisce l'anno di output 1953 e 97 restituisce 1997.
  2. In ESQL, il primo giorno dell'anno è considerato essere nella prima settimana, per cui il giorno 1 gennaio è sempre nella settimana 1. Ciò può determinare che le date specificate come relative ad un anno siano presenti in un anno diverso. Ad esempio, "Lunedì settimana 1 2005" analizzato utilizzando "EEEE' week 'w' 'YYYY" restituisce la data 2004-12-27, perché il lunedì della prima settimana del 2005 è una data del 2004.

    Se si utilizza il simbolo y, l'aggiustamento non viene eseguito e si potrebbero verificare risultati imprevedibili per le date nella parte finale dell'anno. Ad esempio, se la stringa "2005 01 Lunedì" è formattata:

    • Lunedì della settimana 1 ne 2005 utilizzando la stringa di formattazione "YYYY ww EEEE" viene interpretato correttamente come 27 dicembre 2004
    • Lunedì della settimana 1 nel 2005 utilizzando la stringa di formattazione "yyyy ww EEEE" viene interpretato in modo errato come 27 dicembre r2005
  3. L'11 luglio 2001 è il secondo mercoledì di luglio ed è possibile esprimerlo come 2001 luglio mercoledì 2 utilizzando la stringa di formato yyyy MMMM EEEE F. Non si tratta dello stesso mercoledì nella settimana 2 di luglio 2001, vale a dire il 4 luglio 2001.
  4. E' possibile che la prima e l'ultima settimana di un mese includano giorni del mese successivo o precedente. Ad esempio, è possibile esprimere martedì 31 luglio 2001 come martedì della settimana uno di agosto 2001, vale a dire 2001 08 1 martedì utilizzando la stringa di formato yyyy MM W EEEE.
  5. Fare riferimento alla sezione ISO8601, token I e T data/ora.
  6. I valori specificati nel campo relativo al giorno della settimana sono fissati in:
    • 1 - Domenica
    • 2 - Lunedì
    • 3 - Martedì
    • 4 - Mercoledì
    • 5 - Giovedì
    • 6 - Venerdì
    • 7 - Sabato
  7. E' possibile che nel campo relativo al formato di 24 ore risulti un'ora ambigua se viene specificato un campo am/pm conflittuale.
  8. Frazioni di secondi: è necessario che la lunghezza corrisponda in modo implicito al numero dei simboli di formato dell'input. L'output è arrotondato alla lunghezza specificata.
  9. Valori relativi ai fusi orari lunghi funzionano meglio se utilizzati nel formato Continente o Città. In modo analogo, in sistemi Unix è necessario specificare la variabile di ambiente TZ utilizzando il formato Continente o Città.

ISO8601, token I e T data/ora

Se i valori data/ora sono compatibili con lo standard ISO8601:2000 relativo alle rappresentazione delle date e dell'ora, valutare la possibilità di utilizzare i simboli di formattazione I e T. Questi corrispondono a una serie secondaria dello standard ISO8601 e in modo specifico a quanto riportato di seguito.

E' necessario utilizzare questi simboli da soli.

Nell'output verrà applicato il seguente formato in base al tipo di dati logico.

Tipo dati MRM logico Tipo dati ESQL logico Formato output
xsd:dateTime TIMESTAMP o GMTTIMESTAMP aaaa-MM-dd'T'HH:mm:ss.SSSZZZ
xsd:date DATE aaaa-MM-dd
xsd:gYear INTERVAL aaaa
xsd:gYearMonth INTERVAL aaaa-MM
xsd:gMonth INTERVAL --MM
xsd:gmonthDay INTERVAL --MM-dd
xsd:gDay INTERVAL ---dd
xsd:time TIME / GMTTIME 'T'HH:mm:ss.SSSZZZ
Nota:
  • Nell'input nei valori I e T sono accettati "+00:00" e "Z" per indicare una differenza oraria pari a zero dal fuso orario UTC (Coordinated Universal Time), ma nell'output verrà creato sempre un valore "+00:00". Se viene richiesto che nell'output venga creato sempre "Z", utilizzare i simboli di formattazione alternativi IU o TU.
  • Per il valore ZZZ viene creato un output "+00:00" per indicare una differenza oraria pari a zero dal fuso orario UTC (Coordinated Universal Time). Se viene richiesto che nell'output venga creato sempre "Z", utilizzare il formato alternativo ZZZU.

Utilizzo del formato UTC di input nell'output

Un elemento o un attributo di tipo logico xsd:dateTime o xsd:time in cui è contenuto un valore data/ora sotto forma di stringa è in grado di specificare il valore UTC (Coordinated Universal Time) utilizzando il carattere Z o il fuso orario +00:00. Nell'input nel programma di analisi MRM è memorizzato il formato UTC di tali elementi e attributi. Nell'output è possibile specificare se è necessario visualizzare Z o +00:00 utilizzando la proprietà del formato data/ora dell'elemento o dell'attributo. In alternativa, è possibile mantenere il formato UTC di input selezionando la proprietà della serie di messaggi Utilizza il formato UTC di immissione nell'emissione. Se tale proprietà è selezionata, nel messaggio di output verrà mantenuto il formato UTC, che sostituisce il valore specificato dalla proprietà del formato data/ora.

Esempi

Nella tabella riportata di seguito sono riportati alcuni esempi dei formati data/ora.

Modello di formato Risultato
"aaaa.MM.dd'at'HH:mm:ss ZZZ" 10/07/1996 alle ore 15:08:56 -05:00
EEE, MMM d, "yy" Mer, 10 luglio '96
"h:mm a" 20:08
"hh 'o''clock' a, ZZZZ" 09:00, GMT+09:00
"K:mm a, ZZZ" 9:34, -05:00
"aaaa.MMMMM.dd hh:mm aaa" 10.luglio.1996 12:08
Concetti correlati
Creazione di modelli di messaggio
Il modello di messaggio
Attività correlate
Sviluppo di modelli di messaggio
Gestione di un file di definizione dei messaggi
Gestione degli oggetti del modello messaggio
Riferimenti correlati
Informazioni di riferimento del modello di messaggio
Proprietà dell'oggetto modello di messaggio
Funzione CAST
Formattazione ed analisi dei numeri come stringhe
Funzioni CAST supportate
Assegnazioni implicite
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05616_