Il tipo di dato Date viene utilizzato per rappresentare una data oppure una data completa di orario.
In Ready Pro alcune proprietà restituiscono direttamente valori di questo tipo.
Ad esempio:
restituisce la data del documento come valore Date.
Altri campi possono invece essere accessibili solamente tramite CustomField. In questo caso occorre ricordare che CustomField restituisce sempre un valore di tipo String, anche quando il campo contiene una data.
Un esempio pratico: calcolare i giorni previsti per l'evasione di un ordine
Consideriamo un ordine cliente.
La data del documento può essere recuperata direttamente tramite:
ed è già un valore di tipo Date.
La Data evasione prevista può invece essere recuperata tramite:
CustomField restituisce però il valore come testo.
Per poter trattare la Data evasione prevista come una vera data è quindi necessario convertirla tramite:
A questo punto è possibile utilizzare, ad esempio, la funzione VBScript DateDiff per calcolare quanti giorni intercorrono tra la data dell'ordine e la data prevista per l'evasione:
La funzione DateDiff permette di calcolare la differenza tra due date.
Nel nostro esempio:
il parametro "d" indica che la differenza deve essere calcolata in giorni.
Se, ad esempio, l'ordine è stato inserito il 10/05/2026 e la data di evasione prevista è il 15/05/2026, il risultato sarà:
Lo script consente quindi di aggiungere alla lista degli ordini una colonna che mostra quanti giorni sono previsti tra l'inserimento dell'ordine e la sua evasione.
È in un caso come questo che diventa evidente l'utilità della conversione.
L'espressione:
recupera il contenuto del campo Data evasione prevista come testo.
L'espressione:
lo converte invece in un valore Date, che può essere utilizzato nelle funzioni di VBScript dedicate alle date.
In Ready Pro alcune proprietà restituiscono direttamente valori di questo tipo.
Ad esempio:
Doc.DocDaterestituisce la data del documento come valore Date.
Altri campi possono invece essere accessibili solamente tramite CustomField. In questo caso occorre ricordare che CustomField restituisce sempre un valore di tipo String, anche quando il campo contiene una data.
Un esempio pratico: calcolare i giorni previsti per l'evasione di un ordine
Consideriamo un ordine cliente.
La data del documento può essere recuperata direttamente tramite:
Doc.DocDateed è già un valore di tipo Date.
La Data evasione prevista può invece essere recuperata tramite:
Doc.CustomField(115)CustomField restituisce però il valore come testo.
Per poter trattare la Data evasione prevista come una vera data è quindi necessario convertirla tramite:
Rdy.toDate(Doc.CustomField(115))A questo punto è possibile utilizzare, ad esempio, la funzione VBScript DateDiff per calcolare quanti giorni intercorrono tra la data dell'ordine e la data prevista per l'evasione:
Option Explicit
Dim DataOrdine
Dim DataEvasionePrevista
Dim GiorniPerEvasione
DataOrdine = Doc.DocDate
DataEvasionePrevista = Rdy.toDate(Doc.CustomField(115))
GiorniPerEvasione = DateDiff("d", DataOrdine, DataEvasionePrevista)
Response.Write(GiorniPerEvasione)
La funzione DateDiff permette di calcolare la differenza tra due date.
Nel nostro esempio:
DateDiff("d", DataOrdine, DataEvasionePrevista)il parametro "d" indica che la differenza deve essere calcolata in giorni.
Se, ad esempio, l'ordine è stato inserito il 10/05/2026 e la data di evasione prevista è il 15/05/2026, il risultato sarà:
5Lo script consente quindi di aggiungere alla lista degli ordini una colonna che mostra quanti giorni sono previsti tra l'inserimento dell'ordine e la sua evasione.
È in un caso come questo che diventa evidente l'utilità della conversione.
L'espressione:
Doc.CustomField(115)recupera il contenuto del campo Data evasione prevista come testo.
L'espressione:
Rdy.toDate(Doc.CustomField(115))lo converte invece in un valore Date, che può essere utilizzato nelle funzioni di VBScript dedicate alle date.
Funzioni per lavorare con le date
VBScript mette a disposizione diverse funzioni specifiche per lavorare con i valori Date.
Oltre a DateDiff, utilizzata negli esempi precedenti, esistono funzioni per estrarre giorno, mese, anno e orario, aggiungere o sottrarre intervalli di tempo, formattare una data oppure creare nuovi valori Date.
Queste funzioni verranno illustrate separatamente in una sezione successiva dedicata alle operazioni sulle date.
In questa fase è sufficiente ricordare che, una volta ottenuto o convertito un valore nel tipo Date, sarà possibile utilizzarlo con tutte le funzioni VBScript dedicate alla gestione di date e orari.
N.B. Un valore Date può contenere anche un orario. Questo aspetto deve essere tenuto presente quando si effettuano confronti o calcoli tra valori che possono comprendere sia la data sia l'ora.
VBScript mette a disposizione diverse funzioni specifiche per lavorare con i valori Date.
Oltre a DateDiff, utilizzata negli esempi precedenti, esistono funzioni per estrarre giorno, mese, anno e orario, aggiungere o sottrarre intervalli di tempo, formattare una data oppure creare nuovi valori Date.
Queste funzioni verranno illustrate separatamente in una sezione successiva dedicata alle operazioni sulle date.
In questa fase è sufficiente ricordare che, una volta ottenuto o convertito un valore nel tipo Date, sarà possibile utilizzarlo con tutte le funzioni VBScript dedicate alla gestione di date e orari.
N.B. Un valore Date può contenere anche un orario. Questo aspetto deve essere tenuto presente quando si effettuano confronti o calcoli tra valori che possono comprendere sia la data sia l'ora.
Impostazioni internazionali e variabili di tipo data
Utilizzare direttamente un Response.Write una variabile di tipo Date non sempre e' consigliabile perche' il risultato e' fortemente legato alle impostazioni internazionali di Windows, della postazione su cui e' in esecuzione lo script.
Quindi, ad esempio, un sistema operativo con impostazioni italiane potrebbe visualizzare una data nel formato giorno/mese/anno, mentre un PC con impostazioni americane sul pannello di controllo potrebbe visualizzare nel formato mese/giorno/anno.
Nel caso di variabili che contengono anche l'orario i risultati possono essere poi ancora diversi.
Utilizzare direttamente un Response.Write una variabile di tipo Date non sempre e' consigliabile perche' il risultato e' fortemente legato alle impostazioni internazionali di Windows, della postazione su cui e' in esecuzione lo script.
Quindi, ad esempio, un sistema operativo con impostazioni italiane potrebbe visualizzare una data nel formato giorno/mese/anno, mentre un PC con impostazioni americane sul pannello di controllo potrebbe visualizzare nel formato mese/giorno/anno.
Nel caso di variabili che contengono anche l'orario i risultati possono essere poi ancora diversi.
Per questo motivo esistono varie funzioni (qui sotto vedremo, come sempre, quelle in linguaggio VBScript) che consentono di formattare forzatamente i valori come meglio si desidera.
Supponiamo di avere una variabile chiamata DataDocumento di tipo "Date" che contiene la data 20 Maggio 2018 ore 15:36:24
Se provassimo a visualizzare/stampare il valore con un semplice
il risultato, su un PC con impostazioni internazionali italiane, sarebbe di questo tipo
Supponiamo di avere una variabile chiamata DataDocumento di tipo "Date" che contiene la data 20 Maggio 2018 ore 15:36:24
Se provassimo a visualizzare/stampare il valore con un semplice
Response.Write(DataDocumento) il risultato, su un PC con impostazioni internazionali italiane, sarebbe di questo tipo
20/05/2018 15:36:24Per visualizzare solo la parte relativa alla data, senza orario, possiamo utilizzare la funzione FormatDateTime di VBScript (https://www.w3schools.com/asp/func_formatdatetime.asp) con il formato "2"
in questo caso il risultato sara' semplicemente
Response.Write(FormatDateTime(DataDocumento , 2)) in questo caso il risultato sara' semplicemente
20/05/2018Allo stesso modo, per visualizzare solo la parte relativa all'orario, senza data, possiamo utilizzare la funzione FormatDateTime di VBScript (https://www.w3schools.com/asp/func_formatdatetime.asp) con il formato "3"
in questo caso il risultato sara'
o se volessimo escludere i secondi, e quindi visualizzare solo ore e minuti con il formato "4" quindi
ed il risultato sara' semplicemente
Response.Write(FormatDateTime(DataDocumento , 3)) in questo caso il risultato sara'
15:36:24o se volessimo escludere i secondi, e quindi visualizzare solo ore e minuti con il formato "4" quindi
Response.Write(FormatDateTime(DataDocumento , 4)) ed il risultato sara' semplicemente
15:36Esistono anche funzioni che consentono di estrapolare da una variabile data solo il numero giorno o del mese o dell'anno, oppure l'ora od il numero di minuti.
Vediamo qui di seguito degli esempi
Numero del giorno : funzione Day()
Numero del mese : funzione Month()
Anno: funzione Year()
Ora del giorno: funzione Hour()
Numero di minuti : funzione Minute()
Numero di secondi : funzione Second()
Vediamo qui di seguito degli esempi
Numero del giorno : funzione Day()
Response.Write(Day(DataDocumento))Risultato : 20Numero del mese : funzione Month()
Response.Write(Month(DataDocumento))Risultato : 5Anno: funzione Year()
Response.Write(Month(DataDocumento))Risultato : 2018Ora del giorno: funzione Hour()
Response.Write(Hour(DataDocumento))Risultato : 15Numero di minuti : funzione Minute()
Response.Write(Minute(DataDocumento))Risultato : 36Numero di secondi : funzione Second()
Response.Write(Second(DataDocumento))Risultato : 24


