Differenze tra le versioni di "Convertire i secondi in formato ore:minuti:secondi"

Da Gambas-it.org - Wikipedia.
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Il caso è quello in cui, avendo un valore che rappresentano i secondi di un tempo, si vuole ottenere una conversione nel formato stringa ''ore:minuti:secondi". |[[#Note|1]]|
+
Il caso è quello in cui, avendo un valore che rappresenta i ''secondi'', si vuole ottenere una conversione nel formato stringa ''ore:minuti:secondi''.
  
La sintassi è la seguente:
+
 
  Format(Time(''ore'', ''minuti'', ''secondi'')), "hh:nn:ss")
+
==Uso della funzione ''Date( )''==
 +
Come è noto, la funzione ''Date( )'' restituisce un valore temporale di tipo ''Date'' dai dati passati ad uno o più dei suoi parametri. In particolare, nel caso considerato da questa pagina, se i secondi sono superiori al valore "60", bisognerà passare il loro valore all'ultimo parametro della funzione ''Date( )'', quello dei millisecondi ovviamnete moltiplicando detto valore per mille.
 +
<BR>Il risultato va opportunamente convertito in stringa mediante la funzione ''CStr( )''.
 +
 
 +
Esempio pratico:
 +
  '''Public''' Sub Main()
 +
 
 +
  Dim secondi As Integer
 +
  Dim s As String
 +
     
 +
  secondi = 12345
 +
   
 +
  s = CStr(Date(0, 0, 0, 0, 0, 0, secondi * 1000))
 +
 
 +
  Print s
 +
 
 +
'''End'''
 +
 
 +
==Uso della funzione "Time()"==
 +
Più brevemente si potrà usare la funzione "Time()": <SUP>&#91;[[#Note|Nota 1]]&#93;</sup>
 +
'''Public''' Sub Main()
 +
 
 +
  Dim secondi As Integer
 +
  Dim s As String
 +
     
 +
  secondi = 12345
 +
   
 +
  s = CStr(Time(0, 0, 0, secondi * 1000))
 +
 
 +
  Print s
 +
 
 +
'''End'''
 +
 
 +
==Uso della funzione ''Format( )''==
 +
Quest'altra modalità prevede l'uso della funzione ''Format( )''.
 +
<BR>Nel secondo parametro di tale funzione va specificato il formato desiderato della rappresentazione oraria, come ad esempio "''hh:nn:ss''".  <SUP>&#91;[[#Note|Nota 2]]&#93;</sup> <SUP>&#91;[[#Note|Nota 3]]&#93;</sup>
  
  
 +
La sintassi è la seguente:
 +
Format(Time(''ore'', ''minuti'', ''secondi'')), "hh:nn:ss") As String
 
Nel seguente esempio verranno mostrati i secondi passati dall'apertura del programma alla pressione sul ''Button'':
 
Nel seguente esempio verranno mostrati i secondi passati dall'apertura del programma alla pressione sul ''Button'':
 
  '''Private''' dt1 As Date
 
  '''Private''' dt1 As Date
Riga 16: Riga 53:
 
   
 
   
 
   
 
   
  '''Public Sub Button1_Click()
+
  '''Public''' Sub Button1_Click()
 
   
 
   
 
   Dim dt2 As Date
 
   Dim dt2 As Date
Riga 22: Riga 59:
 
   dt2 = Time(Now)
 
   dt2 = Time(Now)
 
   
 
   
  <FONT color=#006400>' ''Viene calcolata la differenza fra i due tempi e viene espressa in secondi;''
+
  <FONT color=gray>' ''Viene calcolata la differenza fra i due tempi e viene espressa in secondi; poi quel risultato viene convertito nel formato stringa impostato:''</font>
' ''poi quel risultato viene convertito nel formato stringa impostato:''</font>
 
 
   Print Format(Time(0, 0, DateDiff(dt1, dt2, gb.Second)), "hh:nn:ss")
 
   Print Format(Time(0, 0, DateDiff(dt1, dt2, gb.Second)), "hh:nn:ss")
 
   
 
   
 +
'''End'''
 +
 +
 +
==Uso dell'operatore ''Mod''==
 +
Con l'operatore ''[http://gambaswiki.org/wiki/lang/mod?l=it Mod]'' è possibile convertire i secondi in ''ore'', ''minuti'' e restanti ''secondi''.
 +
 +
 +
Mostriamo un esempio:
 +
'''Public''' Sub Main()
 +
 
 +
  Dim ore, minuti, secondi As Integer
 +
   
 +
  secondi = 12345
 +
 
 +
  ore = secondi / 3600
 +
  minuti = (secondi Mod 3600) / 60
 +
  secondi = (secondi Mod 3600) Mod 60
 +
 
 +
  Print ore; ":"; minuti; ":"; secondi
 +
 
 +
'''End'''
 +
 +
 +
==Uso di alcune funzioni esterne del API di ''libglib-2.0''==
 +
E' possibile, volendo, utilizzare alcune funzioni esterne del API di ''libglib-2.0''.
 +
 +
Mostriamo un semplice esempio, nel quale si convertirà il valore pari a 3250 secondi nel formato ''ore:minuti:secondi'':
 +
Library "libglib-2.0"
 +
 +
Public Struct GTimeVal
 +
  tv_sec As Long
 +
  tv_usec As Long
 +
End Struct
 +
 +
<FONT Color=gray>' ''GDateTime * g_date_time_new_from_timeval_utc (const GTimeVal *tv)''
 +
' ''Creates a GDateTime corresponding to the given GTimeVal tv in UTC.''</font>
 +
Private Extern g_date_time_new_from_timeval_utc(tv As GTimeVal) As Pointer
 +
 +
<FONT Color=gray>' ''gchar * g_date_time_format (GDateTime *datetime, const gchar *format)''
 +
' ''Creates a newly allocated string representing the requested format.''</font>
 +
Private Extern g_date_time_format(datetime As GTimeVal, gformat As String) As String
 +
 +
 +
'''Public''' Sub Main()
 +
 
 +
  Dim GTv As New GTimeVal
 +
  Dim dt As Pointer
 +
 
 +
  GTv.tv_sec = 3250
 +
   
 +
  dt = g_date_time_new_from_timeval_utc(GTv)
 +
   
 +
  Print g_date_time_format(dt, "%kh %Mmin %Ssec")
 +
 
 
  '''End'''
 
  '''End'''
  
Riga 31: Riga 121:
  
 
=Note=
 
=Note=
[1] Ovviamente si potrà ottenere anche il formato stringa: ''ore/minuti/secondi''.
+
[1] Al riguardo vedere anche la seguente pagina della Wiki: https://www.gambas-it.org/wiki/index.php?title=Ottenere_una_data_e-o_l%27orario_comprensivo_dei_millisecondi
 +
 
 +
[2] Ovviamente si potrà ottenere anche il formato stringa: ''ore/minuti/secondi''.
 +
 
 +
[3] Al riguardo vedere anche la seguente pagina della Wiki: http://www.gambas-it.org/wiki/index.php?title=Formattare_%22hh:nn:ss%22_dai_soli_secondi

Versione attuale delle 20:07, 16 dic 2020

Il caso è quello in cui, avendo un valore che rappresenta i secondi, si vuole ottenere una conversione nel formato stringa ore:minuti:secondi.


Uso della funzione Date( )

Come è noto, la funzione Date( ) restituisce un valore temporale di tipo Date dai dati passati ad uno o più dei suoi parametri. In particolare, nel caso considerato da questa pagina, se i secondi sono superiori al valore "60", bisognerà passare il loro valore all'ultimo parametro della funzione Date( ), quello dei millisecondi ovviamnete moltiplicando detto valore per mille.
Il risultato va opportunamente convertito in stringa mediante la funzione CStr( ).

Esempio pratico:

Public Sub Main()
 
 Dim secondi As Integer
 Dim s As String
     
 secondi = 12345
   
 s = CStr(Date(0, 0, 0, 0, 0, 0, secondi * 1000))
  
 Print s
  
End

Uso della funzione "Time()"

Più brevemente si potrà usare la funzione "Time()": [Nota 1]

Public Sub Main()
 
 Dim secondi As Integer
 Dim s As String
     
 secondi = 12345
   
 s = CStr(Time(0, 0, 0, secondi * 1000))
  
 Print s
  
End

Uso della funzione Format( )

Quest'altra modalità prevede l'uso della funzione Format( ).
Nel secondo parametro di tale funzione va specificato il formato desiderato della rappresentazione oraria, come ad esempio "hh:nn:ss". [Nota 2] [Nota 3]


La sintassi è la seguente:

Format(Time(ore, minuti, secondi)), "hh:nn:ss") As String

Nel seguente esempio verranno mostrati i secondi passati dall'apertura del programma alla pressione sul Button:

Private dt1 As Date


Public Sub Form_Open()

  dt1 = Time(Now)

End


Public Sub Button1_Click()

 Dim dt2 As Date

  dt2 = Time(Now)

' Viene calcolata la differenza fra i due tempi e viene espressa in secondi; poi quel risultato viene convertito nel formato stringa impostato:
  Print Format(Time(0, 0, DateDiff(dt1, dt2, gb.Second)), "hh:nn:ss")

End


Uso dell'operatore Mod

Con l'operatore Mod è possibile convertire i secondi in ore, minuti e restanti secondi.


Mostriamo un esempio:

Public Sub Main()
 
 Dim ore, minuti, secondi As Integer
   
  secondi = 12345
  
  ore = secondi / 3600
  minuti = (secondi Mod 3600) / 60
  secondi = (secondi Mod 3600) Mod 60
  
  Print ore; ":"; minuti; ":"; secondi
  
End


Uso di alcune funzioni esterne del API di libglib-2.0

E' possibile, volendo, utilizzare alcune funzioni esterne del API di libglib-2.0.

Mostriamo un semplice esempio, nel quale si convertirà il valore pari a 3250 secondi nel formato ore:minuti:secondi:

Library "libglib-2.0"

Public Struct GTimeVal
  tv_sec As Long
  tv_usec As Long
End Struct

' GDateTime * g_date_time_new_from_timeval_utc (const GTimeVal *tv)
' Creates a GDateTime corresponding to the given GTimeVal tv in UTC.
Private Extern g_date_time_new_from_timeval_utc(tv As GTimeVal) As Pointer

' gchar * g_date_time_format (GDateTime *datetime, const gchar *format)
' Creates a newly allocated string representing the requested format.
Private Extern g_date_time_format(datetime As GTimeVal, gformat As String) As String


Public Sub Main()
 
 Dim GTv As New GTimeVal
 Dim dt As Pointer
  
  GTv.tv_sec = 3250
   
  dt = g_date_time_new_from_timeval_utc(GTv)
   
  Print g_date_time_format(dt, "%kh %Mmin %Ssec")
  
End


Note

[1] Al riguardo vedere anche la seguente pagina della Wiki: https://www.gambas-it.org/wiki/index.php?title=Ottenere_una_data_e-o_l%27orario_comprensivo_dei_millisecondi

[2] Ovviamente si potrà ottenere anche il formato stringa: ore/minuti/secondi.

[3] Al riguardo vedere anche la seguente pagina della Wiki: http://www.gambas-it.org/wiki/index.php?title=Formattare_%22hh:nn:ss%22_dai_soli_secondi