Data/ora come dati di stringa

In questa sezione vengono fornite informazioni sulla procedura per specificare il formato data/ora 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 dell'oggetto data/ora dipende dai simboli specificati come riportato di seguito:

Note: di seguito vengono riportate le note alla tabella riportata sopra:
  1. L'anno viene gestito in modo particolare:
    • Durante l'output, se il numero di y è 2, l'anno viene troncato a due cifre. Ad esempio, se con yyyy viene prodotto 1997, con yy viene prodotto 97.
    • Durante l'input, per gli anni a 2 cifre il secolo viene stabilito utilizzando la proprietà della serie di messaggi fisici Inizio del secolo con le prime due cifre dell'anno. Ad esempio, se la proprietà Inizio del secolo con le prime due cifre dell'anno è impostata su 53, l'anno 97 è 1997, l'anno 52 è 2052 e l'anno 53 è 1953.
  2. L'inizio dell'anno è di solito durante la settimana. Se il numero di giorni in tale settimana è minore del valore specificato dalla proprietà della serie di messaggi fisici Giorni nella prima settimana dell'anno, la settimana viene considerata come l'ultima settimana dell'anno precedente e la settimana 1 comincerà dopo alcuni giorni dell'anno successivo. In caso contrario, viene considerata la prima settimana dell'anno successivo e la settimana 1 comincerà alcuni giorni prima dell'anno nuovo. Ad esempio, il lunedì della settimana 1 nel 2004 (2004 01 lunedì, dove il valore dei giorni nella prima settimana dell'anno è = 4 e il valore del primo giorno della settimana è = lunedì) utilizzando la stringa di formatoYYYY ww EEEE è il 29 dicembre 2003. Se si utilizza Y, il giorno della settimana (E) e la settimana dell'anno (w) sono modificati se necessario per indicare che la data si trova nell'anno precedente.

    Se si utilizza il simbolo y, non vengono eseguite le modifiche ed è possibile che si verifichino risultati non previsti per le date relative agli ultimi giorni dell'anno. Ad esempio, se viene effettuata la formattazione della stringa 2002 01 lunedì:

    • Il lunedì della settimana 1 nel 2002 utilizzando la stringa di formato YYYY ww EEEE viene interpretato in modo corretto come 31 dicembre 2001
    • Il lunedì della settimana 1 nel 2002 utilizzando la stringa di formato yyyy ww EEEE viene interpretato in modo errato come 30 dicembre 2002

    Utilizzare Y solo insieme al valore w. Se si specifica Y senza w, l'anno viene ignorato. Ad esempio, se si specifica YYYY-MM-dd per effettuare la formattazione di 1996-03-01, il risultato è 2005-03-01 poiché l'input dell'anno viene ignorato e viene presunto l'utilizzo dell'anno corrente.

  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. Il giorno nel campo della settimana è l'offset numerico in una settimana e varia in base al valore della proprietà della serie di messaggi fisici Primo giorno della settimana. Ad esempio, il terzo giorno nella settimana sarebbe mercoledì dove una proprietà della serie di messaggi fisici Primo giorno della settimana è impostata su lunedì.
  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
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ad09291_