Differenze tra le versioni di "Gmtime()"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
 
La funzione della libreria di C
 
La funzione della libreria di C
 
  struct tm *gmtime(const time_t *timer);
 
  struct tm *gmtime(const time_t *timer);
utilizza il valore puntato dalla funzione ''timer()'' per riempire una struttura con i valori che rappresentano il tempo corrispondente, espressi in tempo universale coordinato (UTC) o GMT fuso orario.
+
utilizza il valore puntato dalla funzione "timer()" per riempire una struttura con i valori che rappresentano il tempo corrispondente, espressi in tempo universale coordinato (UTC) o GMT fuso orario.
  
 
In Gambas, bisognerà innanzitutto dichiarare la prevista Struttura ''tm'':
 
In Gambas, bisognerà innanzitutto dichiarare la prevista Struttura ''tm'':
Riga 17: Riga 17:
 
inoltre si dovrà dichiarare la fuzione ''gmtime()'' con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
 
inoltre si dovrà dichiarare la fuzione ''gmtime()'' con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
 
  Private <FONT color=#B22222>Extern gmtime</font>(time_p As Pointer) As Tm In "<FONT color=#B22222>libc:6</font>"
 
  Private <FONT color=#B22222>Extern gmtime</font>(time_p As Pointer) As Tm In "<FONT color=#B22222>libc:6</font>"
 
  
  
Riga 43: Riga 42:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim nunc As Pointer
 
   Dim nunc As Pointer
Riga 57: Riga 56:
 
   Print "Orario: "; (tempus.tm_hour + 2) Mod 24; ":"; Format(tempus.tm_min, "00"); ":"; Format(tempus.tm_sec, "00")
 
   Print "Orario: "; (tempus.tm_hour + 2) Mod 24; ":"; Format(tempus.tm_min, "00"); ":"; Format(tempus.tm_sec, "00")
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 16:35, 14 giu 2024

La funzione della libreria di C

struct tm *gmtime(const time_t *timer);

utilizza il valore puntato dalla funzione "timer()" per riempire una struttura con i valori che rappresentano il tempo corrispondente, espressi in tempo universale coordinato (UTC) o GMT fuso orario.

In Gambas, bisognerà innanzitutto dichiarare la prevista Struttura tm:

Public Struct tm
  tm_sec As Integer      ' secondi (0 - 59)
  tm_min As Integer      ' minuti (0 - 59)
  tm_hour As Integer     ' ore (0 - 23)
  tm_mday As Integer     ' Giorno del mese (1 - 31)
  tm_mon As Integer      ' Mese (1 - 12)
  tm_year As Integer     ' Anno (numero di anni dal 1900)
  tm_wday As Integer     ' Giorno della Settimana (0 - 6)
  tm_yday As Integer     ' Giorno nell'Anno (0 - 365)
  tm_isdst As Integer    ' ora legale
End Struct

inoltre si dovrà dichiarare la fuzione gmtime() con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:

Private Extern gmtime(time_p As Pointer) As Tm In "libc:6"


Semplice esempio di uso in Gambas insieme con la funzione di C Time() per ottenere l'orario corrente:

Public Struct tm
  tm_sec As Integer      ' secondi (0 - 59)
  tm_min As Integer      ' minuti (0 - 59)
  tm_hour As Integer     ' ore (0 - 23)
  tm_mday As Integer     ' Giorno del mese (1 - 31)
  tm_mon As Integer      ' Mese (1 - 12)
  tm_year As Integer     ' Anno (numero di anni dal 1900)
  tm_wday As Integer     ' Giorno della Settimana (0 - 6)
  tm_yday As Integer     ' Giorno nell'Anno (0 - 365)
  tm_isdst As Integer    ' ora legale
End Struct

 Library "libc:6"
' time_t time(time_t *t)
' Poiché la funzione "time" ha lo steso nome della funzione "Time" i Gambas, le cambiamo nome,
' ma contestuamente dichiariamo il suo vero nome con "Exec":
Private Extern Ora(t As Pointer) As Integer Exec "time"

' struct tm *gmtime(const time_t *timer)
Private Extern gmtime(time_p As Pointer) As Tm


Public Sub Main()

 Dim nunc As Pointer
 Dim tempus As New Tm
 
' Legge il corrente orario del sistema:
  ora(VarPtr(nunc))
  
' Converte l'orario del sistema in GMT (ora UTC):
  tempus = gmtime(VarPtr(nunc))

' Mostra l'orario corrente valido per l'Italia:
  Print "Orario: "; (tempus.tm_hour + 2) Mod 24; ":"; Format(tempus.tm_min, "00"); ":"; Format(tempus.tm_sec, "00")

End