Autore Topic: Ottenere ore minuti e secondi dai soli secondi  (Letto 787 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Ottenere ore minuti e secondi dai soli secondi
« il: 17 Aprile 2019, 23:50:49 »
Visto che Akrobaticone è curioso di sapere come funziona TimeBox allego una immagine e un codice che ne simula il valore di ritorno.
Vorrei sapere se esistono altri modi per ottenere quanto in oggetto.

Codice: [Seleziona]
'' s1 e s2 simulano il risultato del nuovo controllo TimeBox.
'' Per l'esattezza di due controlli TimeBox...'
Public Sub Main()

  Dim Data1, Data2 As Date
  Dim s1 As String = "01:12:08"
  Dim s2 As String = "02:04:14"

  Data1 = Time(s1)
  Data2 = Time(s2)
  Print TimeDiff(DateDiff(Data1, Data2, gb.Second))

End

Private Function TimeDiff(iSec As Integer) As String

  Dim h, m, s, res As Integer

  If iSec > 3600 Then
    h = iSec Div 3600
    res = iSec Mod 3600
    m = res Div 60
    s = res Mod 60
  Else If iSec > 60 Then
    h = 0
    m = iSec Div 60
    s = iSec Mod 60
  Else
    h = 0
    m = 0
    s = iSec
  Endif
  Return Format(h, "0#") & ":" & Format(m, "0#") & ":" & Format(s, "0#")

End
« Ultima modifica: 17 Aprile 2019, 23:55:58 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #1 il: 18 Aprile 2019, 09:00:43 »
In sostanza Timebox è un controllo che permette di impostare ora minuti e secondi
mooooolto utile per me
il codice mi sembra corretto

Grazie Gianluigi
"e il naufragar m'è dolce in questo mar"

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #2 il: 18 Aprile 2019, 12:28:02 »
io spesso ho dati in soli secondi (posizioni e durate) ma devo visualizzare in hms e mi sono fatto una funzione cosi':
Codice: [Seleziona]
Function HMS(Secondi As Integer) As String
Dim ore As Integer
Dim minuti As Integer
Dim Sec As Integer
 

  minuti = secondi \ 60
  Sec = Secondi Mod 60
  ore = minuti \ 60
  minuti = minuti Mod 60
 
  Return Format(ore, "00") & ":" & Format(minuti, "00") & ":" & Format(sec, "00")
 
End
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #3 il: 18 Aprile 2019, 13:27:03 »
io spesso ho dati in soli secondi (posizioni e durate) ma devo visualizzare in hms e mi sono fatto una funzione cosi':
...

Decisamente meno codice  :D
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #4 il: 18 Aprile 2019, 18:10:33 »
Proporrei questo:

Codice: [Seleziona]
Dim Secondi As Integer
Dim s As String

  Secondi = 4444

  s = CStr(Time(0, 0, 0, Secondi * 1000))

« Ultima modifica: 17 Dicembre 2020, 02:44:15 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #5 il: 18 Aprile 2019, 19:15:31 »
Proporrei questo:

Codice: [Seleziona]
Dim Secondi As Integer
Dim s As String

  Secondi = 4444

  s = CStr(Date(0, 0, 0, 0, 0, 0, Secondi * 1000))


 :D Credo che più corto di così sia impossibile  :D
Ho cercato di capirlo ma non ci sono riuscito.
Ti andrebbe di spiegare come fa a funzionare?
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #6 il: 18 Aprile 2019, 22:17:15 »
Codice: [Seleziona]
'' s1 e s2 simulano il risultato del nuovo controllo TimeBox.
'' Per l'esattezza di due controlli TimeBox...'
Public Sub Main()

  Dim Data1, Data2 As Date
  Dim s1 As String = "01:12:08"
  Dim s2 As String = "02:04:14"

  Data1 = Time(s1)
  Data2 = Time(s2)
  Print TimeDiff(DateDiff(Data1, Data2, gb.Second))

End

Private Function TimeDiff(iSec As Integer) As String

  Dim h, m, s, res As Integer

  If iSec > 3600 Then
    h = iSec Div 3600
    res = iSec Mod 3600
    m = res Div 60
    s = res Mod 60
  Else If iSec > 60 Then
    h = 0
    m = iSec Div 60
    s = iSec Mod 60
  Else
    h = 0
    m = 0
    s = iSec
  Endif
  Return Format(h, "0#") & ":" & Format(m, "0#") & ":" & Format(s, "0#")

End

Nel tuo esempio le varie If non servono, perchè DIV se il primo numero è inferiore al secondo restituisce 0 senza problemi.
Era sufficiente questo:

Codice: [Seleziona]
Private Function TimeDiff(iSec As Integer) As String
Dim h, m, s, res As Integer
    h = iSec Div 3600
    res = iSec Mod 3600
    m = res Div 60
    s = res Mod 60
Return Format(h, "0#") & ":" & Format(m, "0#") & ":" & Format(s, "0#")
End
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #7 il: 18 Aprile 2019, 22:32:42 »
Grazie,
già avevo avuto il sospetto che potesse funzionare così come hai scritto, e poi li codice di allegfede lo aveva rafforzato, ma se non capisco a fondo preferisco del codice in più ma essere sicuro che funzioni.
Per i tempi di esecuzione credo cambi poco...
La mia è matematica elementare, sig!

P.S. Solo una precisazione: ho capito perché funziona il codice suggerito da TopFuel vale a dire la prima parte della funzione.
Gradirei capire anche il codice di vuott  ;D
« Ultima modifica: 18 Aprile 2019, 23:11:33 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ottenere ore minuti e secondi dai soli secondi
« Risposta #8 il: 18 Aprile 2019, 23:50:51 »
Gradirei capire anche il codice di vuott 

Non capisco cosa ci sia da capire.

« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »