Differenze tra le versioni di "Convertire data ed orario da formato Date in un numero"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
La conversione di un valore di tipo ''Date'', oppure di una stringa contenente data ed orario rappresentati nel formato ''Date'' (ossia: "giorno/mese/anno ore:minuti:secondi") locale, prevede l'uso di alcune funzioni.
+
La conversione di un valore di tipo ''Date'', oppure di una stringa contenente data ed orario rappresentati nel formato ''Date'' (ossia: "giorno/mese/anno ore:minuti:secondi") locale, può avvenire in alcuni modi.
  
 
+
==Conversione di data ed orario, contenuti in una variabile di tipo ''Date'', in un numero in virgola mobile==
===Conversione di data ed orario contenuti in una variabile di tipo ''Date''===
+
In questo caso la conversione avverrà usando la funzione nativa "CFloat()", e sarà restituito un valore in virgola mobile che rappresenta a sinistra della virgola i giorni dal primo numero di giorni dall'epoca di Gambas (un giorno arbitrario risalente a circa 8000 anni a.C.) e a destra della virgola i millesimi di secondo trascorsi dalle ore 00:00 del giorno corrente.
In questo caso la conversione avverrà nel seguente modo:
 
numero = CFloat(''variabile_Date'')
 
 
 
 
 
Esempio:
 
'''Public''' Sub Main()
 
 
  dim numero As Float
 
 
  numero = CFloat(Now)
 
 
  Print numero
 
 
'''End'''
 
 
 
 
 
 
 
 
 
===Conversione di data ed orario contenuti in una variabile di tipo ''Stringa''===
 
Se la data e l'orario sono contenuti in una variabile di tipo ''Stringa'' e rappresentati nel dovuto formato ''Date'', allora la conversione avverrà nel seguente modo:
 
numero = CFloat(Val(''variabile_Stringa''))
 
 
 
 
 
Esempio:
 
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
   Dim s As String
+
   Print CFloat(Now)
  Dim numero As Float
 
 
  s = "21/08/1969 11:21:41"
 
 
  numero = CFloat(Val(s))
 
 
  Print numero
 
 
   
 
   
 
  '''End'''
 
  '''End'''
  
 
+
==Conversione da data/orario in numero intero corrispondente==
 
+
In quest'altro caso la data e l'orario vengono copnvertiti nel esatto numero intero corrispondente. '''Public''' Sub Main()
===Conversione da data/orario in numero intero e successiva riconversione in formato data/orario===
 
Come abbiamo visto nei paragrafi precedenti, la conversione restituisce come valore finale un numero con la virgola, che può essere contenuto in una variabile di tipo ''Float''.
 
 
 
Per convertire tale risultato finale da numero in virgola mobile in un unico numero intero, bisognerà trasformarlo in un valore di tipo ''Long'' con apposita procedura.
 
 
 
 
 
Mostriamo un esempio circolare, nel quale dalla data/orario corrente si otterrà il corrispondente numero in virgola mobile che sarà trasformato in un intero lungo. Successivamente si effettuerà il procedimento inverso, riottenendo ala fine il valore data/orario.
 
'''Public''' Sub Main()
 
 
  Dim numero As Float
 
  Dim s As String
 
  Dim l As Long
 
  Dim f As Float
 
  Dim bb As New Byte[]
 
 
 
 
  numero = CFloat(Now)
 
  Print "Numero in virgola mobile = "; numero
 
 
  s = str(numero)
 
 
   
 
   
 +
<FONT Color=gray>' ''Se la data/orario sono quelli correnti, allora si potrà utilizzare la seguente riga:''</font>
 +
  Print Val(Format(Now, "ddmmyyyy")), Val(Format(Now, "hhnnss"))
 
    
 
    
  <FONT Color=gray>' ''Conversione in un unico numero di tipo Long:''</font>
+
  <FONT Color=gray>' ''Se la data non è quella corrente, allora si potrà utilizzare la seguente riga:''</font>
  s = Replace(s, ",", Null)
+
  Print Val(Format(CDate("08/21/1969"), "ddmmyyyy"))
  l = CLong(Val(s))
 
  Print "Unico numero intero lungo = "; l
 
 
 
<FONT Color=gray>' ''Conversione in un numero in virgola mobile:''</font>
 
  s = CStr(l)
 
  bb = Byte[].FromString(s)
 
  bb.Add(Asc(","), 7)
 
  s = bb.ToString()
 
  f = CFloat(Val(s))
 
  Print "Numero in virgola mobile = "; f
 
 
 
<FONT Color=gray>' ''Conversione in formato data/orario:''</font>
 
  Print CDate(f)
 
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 08:29, 26 apr 2021

La conversione di un valore di tipo Date, oppure di una stringa contenente data ed orario rappresentati nel formato Date (ossia: "giorno/mese/anno ore:minuti:secondi") locale, può avvenire in alcuni modi.

Conversione di data ed orario, contenuti in una variabile di tipo Date, in un numero in virgola mobile

In questo caso la conversione avverrà usando la funzione nativa "CFloat()", e sarà restituito un valore in virgola mobile che rappresenta a sinistra della virgola i giorni dal primo numero di giorni dall'epoca di Gambas (un giorno arbitrario risalente a circa 8000 anni a.C.) e a destra della virgola i millesimi di secondo trascorsi dalle ore 00:00 del giorno corrente.

Public Sub Main()

 Print CFloat(Now)

End

Conversione da data/orario in numero intero corrispondente

In quest'altro caso la data e l'orario vengono copnvertiti nel esatto numero intero corrispondente. Public Sub Main()

' Se la data/orario sono quelli correnti, allora si potrà utilizzare la seguente riga:
 Print Val(Format(Now, "ddmmyyyy")), Val(Format(Now, "hhnnss"))
 
' Se la data non è quella corrente, allora si potrà utilizzare la seguente riga:
 Print Val(Format(CDate("08/21/1969"), "ddmmyyyy"))

End