Difference between revisions of "Data ora"

From SageDev KB
Jump to navigation Jump to search
(Created page with "Per ottenere la data corrente in una variabile Date si usa la funzione <code>date$</code>. Allo stesso modo per avere data e ora correnti in una variabile Datetime si usa la...")
 
 
(13 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
Allo stesso modo per avere data e ora correnti in una variabile Datetime si usa la funzione <code>datetime$</code> (solo dalla V7).
 
Allo stesso modo per avere data e ora correnti in una variabile Datetime si usa la funzione <code>datetime$</code> (solo dalla V7).
  
La forma canonica per rappresentare data e ora con una stringa è:
+
La '''forma canonica''' per rappresentare data e ora con una stringa è:
  
 
<pre>YYYY-MM-DDThh:mm:ssZ          #attenzione alle lettere "in più" T e Z</pre>
 
<pre>YYYY-MM-DDThh:mm:ssZ          #attenzione alle lettere "in più" T e Z</pre>
  
 
Data e ora hanno formato "YYYY-MM-DDThh:mm:ss"
 
Data e ora hanno formato "YYYY-MM-DDThh:mm:ss"
 +
 +
Attenzione: la variabile <code>adxdcs</code> contiene l'anno pivot, usato per capire a quale secolo fare riferimento (anno 41- > 1941 o 2041?)
  
 
<pre>
 
<pre>
Line 13: Line 15:
 
num$(time$)                  #Per ottenere come stringa l'ora corrente
 
num$(time$)                  #Per ottenere come stringa l'ora corrente
 
num$(datetime$)              #Per ottenere come stringa canonica la data e ora odierna
 
num$(datetime$)              #Per ottenere come stringa canonica la data e ora odierna
gdat$(DAY,MONTH,YEAR)        #Per ottenere una data dati giorno, mese e anno
+
 
gdatetime$(str)              #Per ottenere una variabile Datetime da una stringa in forma canonica
 
 
year(data)                    #Per ottenere l'anno di una data
 
year(data)                    #Per ottenere l'anno di una data
 
month(data)                  #Per ottenere il numero del mese di una data
 
month(data)                  #Per ottenere il numero del mese di una data
Line 22: Line 23:
 
dayn(data)                    #Per ottenere il numero del giorno della settimana (1=lunedì, 7=domenica)
 
dayn(data)                    #Per ottenere il numero del giorno della settimana (1=lunedì, 7=domenica)
 
week(data)                    #Per ottenere il numero della settimana (1-53)
 
week(data)                    #Per ottenere il numero della settimana (1-53)
 +
aweek(settimana,anno)        #Per ottenere il primo giorno (lunedì) della settimana specificata
 
nday(data)                    #Per ottenere il numero di giorni passati dal 1 gennaio 1600
 
nday(data)                    #Per ottenere il numero di giorni passati dal 1 gennaio 1600
 
nday$(NUM)                    #Per ottenere una data successiva di NUM giorni dal 1 gennaio 1600
 
nday$(NUM)                    #Per ottenere una data successiva di NUM giorni dal 1 gennaio 1600
 
eomonth(data)                #Per ottenere l'ultimo giorno del mese di una data
 
eomonth(data)                #Per ottenere l'ultimo giorno del mese di una data
 +
addmonth(data,mesi)          #Per ottenere una data sommando n mesi alla data specificata
 +
 +
gdat$(DAY,MONTH,YEAR)        #Per ottenere una data dati giorno, mese e anno
 +
gdatetime$(str)              #Per ottenere una variabile Datetime da una stringa in forma canonica
 
</pre>
 
</pre>
  
Line 38: Line 44:
  
 
<code>FORMATO = "DD[ ]MM[ ]YY"</code>
 
<code>FORMATO = "DD[ ]MM[ ]YY"</code>
 +
 +
=== gdatetime$: da stringa canonica a dateTime ===
 +
<pre>
 +
Local Date DATA
 +
Local Char STR_DATETIME(20)
 +
STR_DATETIME="2011-05-23T04:43:53Z"  #la stringa deve avere 20 caratteri nel formato canonico
 +
gdatetime$(str)
 +
</pre>
 +
 +
YYYY-MM-DDThh:mm:ssZ
 +
 +
=== Esempio ===
 +
<pre>num$(date$+" " +time$)</pre>
 +
resituisce
 +
<pre>"20250327 18:03:46"</pre>
 +
 +
Data e ora assieme in una variabile:
 +
<pre>Local Datetime DT
 +
DT=datetime$</pre>
  
 
=== Esempi ===
 
=== Esempi ===
Line 43: Line 68:
  
 
<pre>
 
<pre>
Local Date DATA
+
Local Date DATA,DATA1
DATA=[1/2/2015]+5       #DATA conterrà [06/02/2015]
+
DATA=[1/2/2015]+5         #DATA conterrà [06/02/2015]
DATA=[1/2/2015]-1        #DATA conterrà [31/01/2015]
+
DATA1=[1/2/2015]-1        #DATA conterrà [31/01/2015]
 +
NUMGIORNI=DATA-DATA1      #giorni di differenza tra due date
 
</pre>
 
</pre>
  
Line 56: Line 82:
 
DATA_STR = DATA                        # conversione implicita: DATA_STR = "20191231"
 
DATA_STR = DATA                        # conversione implicita: DATA_STR = "20191231"
 
</pre>
 
</pre>
 +
 +
Conversione da data/ora a stringa:
 +
 +
<pre>format$("DD2",date$)-num$(time$)</pre>
 +
 +
<pre>format$("DD[-]MM[-]YYYY",date$)-num$(time$)</pre>
 +
  
 
Ottenere ultimo giorno di un mese:  
 
Ottenere ultimo giorno di un mese:  
Line 84: Line 117:
  
 
(per maggiori info dall'help di Sage, Riquadro sviluppo->sottoprogrammi ->Modulo Supervisore)
 
(per maggiori info dall'help di Sage, Riquadro sviluppo->sottoprogrammi ->Modulo Supervisore)
 +
 +
== Videate ==
 +
Per visualizzare un campo che in tabella è di tipo ADATIM (per esempio UPDDATTIM), in maschera utilizzare tipo dato "A" con lunghezza 19.

Latest revision as of 14:44, 28 April 2025

Per ottenere la data corrente in una variabile Date si usa la funzione date$.

Allo stesso modo per avere data e ora correnti in una variabile Datetime si usa la funzione datetime$ (solo dalla V7).

La forma canonica per rappresentare data e ora con una stringa è:

YYYY-MM-DDThh:mm:ssZ           #attenzione alle lettere "in più" T e Z

Data e ora hanno formato "YYYY-MM-DDThh:mm:ss"

Attenzione: la variabile adxdcs contiene l'anno pivot, usato per capire a quale secolo fare riferimento (anno 41- > 1941 o 2041?)

num$(date$)                   #Per ottenere come stringa la data odierna
num$(time$)                   #Per ottenere come stringa l'ora corrente
num$(datetime$)               #Per ottenere come stringa canonica la data e ora odierna

year(data)                    #Per ottenere l'anno di una data
month(data)                   #Per ottenere il numero del mese di una data
month$(data)                  #Per ottenere il nome del mese di una data nella lingua corrente
day(data)                     #Per ottenere il numero del giorno del mese (1-31)
day$(data)                    #Per ottenere il nome del giorno della settimana
dayn(data)                    #Per ottenere il numero del giorno della settimana (1=lunedì, 7=domenica)
week(data)                    #Per ottenere il numero della settimana (1-53)
aweek(settimana,anno)         #Per ottenere il primo giorno (lunedì) della settimana specificata
nday(data)                    #Per ottenere il numero di giorni passati dal 1 gennaio 1600
nday$(NUM)                    #Per ottenere una data successiva di NUM giorni dal 1 gennaio 1600
eomonth(data)                 #Per ottenere l'ultimo giorno del mese di una data
addmonth(data,mesi)           #Per ottenere una data sommando n mesi alla data specificata

gdat$(DAY,MONTH,YEAR)         #Per ottenere una data dati giorno, mese e anno
gdatetime$(str)               #Per ottenere una variabile Datetime da una stringa in forma canonica


Ottenere come stringa con formato a piacere:

format$("D:YYYYMMDD[_]hhmmss",date$)

Il 31 dicembre 2018 alle 12.30 e 56 secondi corrisponderà a “20181231_123056”.

Notare che per inserire uno spazio o altri elementi costanti si usano le parentesi quadre:

FORMATO = "DD[ ]MM[ ]YY"

gdatetime$: da stringa canonica a dateTime[edit]

Local Date DATA
Local Char STR_DATETIME(20)
STR_DATETIME="2011-05-23T04:43:53Z"  #la stringa deve avere 20 caratteri nel formato canonico
gdatetime$(str)

YYYY-MM-DDThh:mm:ssZ

Esempio[edit]

num$(date$+" " +time$)

resituisce

"20250327 18:03:46"

Data e ora assieme in una variabile:

Local Datetime DT
DT=datetime$

Esempi[edit]

Eseguire anche delle semplici operazioni:

Local Date DATA,DATA1
DATA=[1/2/2015]+5         #DATA conterrà [06/02/2015]
DATA1=[1/2/2015]-1        #DATA conterrà [31/01/2015]
NUMGIORNI=DATA-DATA1      #giorni di differenza tra due date

Fare una conversione implicita da data a testo:

Local Char DATA_STR(30)                 # dichiaro una stringa
Local Date DATA                         # dichiaro una data
DATA=[31/12/2019]                       # imposto una data iniziale
DATA_STR = DATA                         # conversione implicita: DATA_STR = "20191231"

Conversione da data/ora a stringa:

format$("DD2",date$)-num$(time$)
format$("DD[-]MM[-]YYYY",date$)-num$(time$)


Ottenere ultimo giorno di un mese:

Local date LASTDATE
LASTDATE = eomonth([1/2/2015])
Infbox num$(LASTDATE)

Ottenere come stringa formattata: usare AFNC.FDH, per esempio func AFNC.FDH(date$,"121531") restituirà, il primo giugno 2018: 01/06/18 12:15:31

Variabili globali contenenti stringhe di formattazione[edit]

Sono preimpostate in base alle varie parametrizzazioni predefinite. Sono utili per mantenere uno standard che si adatta in base ai vari utenti, siti, ecc.

L’ordine giorno-mese-anno di queste formattazioni dipende appunto dalla localizzazione e dalle impostazioni utente.

Le variabili sono queste:

GFMDAT  = data standard, con 2 caratteri per giorno, 2 per il mese , 2 per l’anno
GFMDAT4 = data con l’anno a 4 cifre
GFMDAT3 = data con il mese espresso con tre lettere
GFMDAT9 = data con il mese scritto in lettere
GFMMOI  = mese-anno
GFMMOI4 = mese-anno con anno a 4 cifre
GFMJOU  = giorno-mese

(per maggiori info dall'help di Sage, Riquadro sviluppo->sottoprogrammi ->Modulo Supervisore)

Videate[edit]

Per visualizzare un campo che in tabella è di tipo ADATIM (per esempio UPDDATTIM), in maschera utilizzare tipo dato "A" con lunghezza 19.