Data ora

From SageDev KB
Jump to navigation Jump to search

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
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
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


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"

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"

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.