Differenze tra le versioni di "Convertire i secondi in formato ore:minuti:secondi"
Riga 2: | Riga 2: | ||
− | ==Uso della funzione | + | ==Uso della funzione "Date()"== |
− | Come è noto, la funzione | + | 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 ovviamente moltiplicando detto valore per mille. |
− | <BR>Il risultato va opportunamente convertito in stringa mediante la funzione | + | <BR>Il risultato va opportunamente convertito in stringa mediante la funzione "CStr()". |
Esempio pratico: | Esempio pratico: | ||
− | + | Public Sub Main() | |
Dim secondi As Integer | Dim secondi As Integer | ||
Riga 14: | Riga 14: | ||
secondi = 12345 | secondi = 12345 | ||
− | s = CStr( | + | s = CStr(Time(0, 0, 0, secondi * 1000)) |
Print s | Print s | ||
− | + | End | |
+ | |||
==Uso della funzione "Time()"== | ==Uso della funzione "Time()"== | ||
− | Più brevemente si potrà usare la funzione "Time()": <SUP>[[[#Note| | + | Più brevemente si potrà usare la funzione "Time()": <SUP>[[[#Note|nota 1]]]</sup> |
− | + | Public Sub Main() | |
Dim secondi As Integer | Dim secondi As Integer | ||
Riga 33: | Riga 34: | ||
Print s | 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>[[[#Note|nota 2]]]</sup> <SUP>[[[#Note|nota 3]]]</sup> | ||
La sintassi è la seguente: | La sintassi è la seguente: | ||
Format(Time(''ore'', ''minuti'', ''secondi'')), "hh:nn:ss") As String | 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 | |
− | + | Public Sub Form_Open() | |
dt1 = Time(Now) | dt1 = Time(Now) | ||
− | + | End | |
− | + | Public Sub Button1_Click() | |
− | + | Dim dt2 As Date | |
dt2 = Time(Now) | dt2 = Time(Now) | ||
Riga 62: | Riga 63: | ||
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''== | ==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''. | 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: | Mostriamo un esempio: | ||
− | + | Public Sub Main() | |
− | + | Dim ore, minuti, secondi As Integer | |
secondi = 12345 | secondi = 12345 | ||
Riga 82: | Riga 82: | ||
Print ore; ":"; minuti; ":"; secondi | Print ore; ":"; minuti; ":"; secondi | ||
− | + | End | |
Riga 89: | Riga 89: | ||
Mostriamo un semplice esempio, nel quale si convertirà il valore pari a 3250 secondi nel formato ''ore:minuti:secondi'': | Mostriamo un semplice esempio, nel quale si convertirà il valore pari a 3250 secondi nel formato ''ore:minuti:secondi'': | ||
− | Library "libglib-2.0" | + | Library "libglib-2.0:0.8000.2" |
Public Struct GTimeVal | Public Struct GTimeVal | ||
Riga 105: | Riga 105: | ||
− | + | Public Sub Main() | |
− | + | Dim GTv As New GTimeVal | |
− | + | Dim dt As Pointer | |
GTv.tv_sec = 3250 | GTv.tv_sec = 3250 | ||
Riga 116: | Riga 116: | ||
Print g_date_time_format(dt, "%kh %Mmin %Ssec") | Print g_date_time_format(dt, "%kh %Mmin %Ssec") | ||
− | + | End | |
=Note= | =Note= | ||
− | [1] Al riguardo vedere anche la seguente pagina della Wiki: | + | [1] Al riguardo vedere anche la seguente pagina della Wiki: [[Ottenere una data e-o l'orario comprensivo dei millisecondi]] |
[2] Ovviamente si potrà ottenere anche il formato stringa: ''ore/minuti/secondi''. | [2] Ovviamente si potrà ottenere anche il formato stringa: ''ore/minuti/secondi''. | ||
− | [3] Al riguardo vedere anche la seguente pagina della Wiki: | + | [3] Al riguardo vedere anche la seguente pagina della Wiki: [[Formattare "hh:nn:ss" dai soli secondi]] |
Versione delle 07:46, 1 lug 2024
Il caso è quello in cui, avendo un valore che rappresenta i secondi, si vuole ottenere una conversione nel formato stringa ore:minuti:secondi.
Indice
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 ovviamente 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(Time(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:0.8000.2" 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: Ottenere una data e-o l'orario 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: Formattare "hh:nn:ss" dai soli secondi