Convertire data ed orario da formato Date in un numero

Da Gambas-it.org - Wikipedia.

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.


Conversione di data ed orario contenuti in una variabile di tipo Date

In questo caso la conversione avverrà nel seguente modo:

numero = CFloat(Val(Str(variabile_Date)))


Esempio:

Public Sub Main()

 dim numero As Float

  numero = CFloat(Val(Str(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()

 Dim s As String
 Dim numero As Float

  s = "21/08/1969 11:21:41"

  numero = CFloat(Val(s))

  Print numero

End


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(Val(Str(Now)))
  Print "Numero in virgola mobile = "; numero

  s = str(numero)

 
' Conversione in un unico numero di tipo Long:
  s = Replace(s, ",", Null)
  l = CLong(Val(s))
  Print "Unico numero intero lungo = "; l


' Conversione in un numero in virgola mobile:
  s = CStr(l)
  bb = Byte[].FromString(s)
  bb.Add(Asc(","), 7)
  s = bb.ToString()
  f = CFloat(Val(Str(s)))
  Print "Numero in virgola mobile = "; f


' Conversione in formato data/orario:
  Print CDate(f)

End