Jump to content
Windows Dragon

Converter segundos para h:mm:ss

Recommended Posts

Windows Dragon

Boas pessoal bem tenho este codigo

Private Const HOURS_IN_DAY As Integer = 24
Private Const MINUTES_IN_HOUR As Integer = 60
Private Const SECONDS_IN_MINUTE As Integer = 60

Private Shared Function S2TIME(ByVal s As Integer) As String
        Dim InSeconds As Long, InMinutes As Long, InHours As Long
        Dim seconds As Integer, minutes As Integer, hours As Integer
        Dim r As String
        InSeconds = s
        seconds = InSeconds Mod (SECONDS_IN_MINUTE)
        InMinutes = InSeconds / SECONDS_IN_MINUTE
        minutes = InMinutes Mod (MINUTES_IN_HOUR)
        InHours = InMinutes / MINUTES_IN_HOUR
        hours = InHours Mod (HOURS_IN_DAY)
        If hours > 0 Then
            r = hours & ":"
        Else
            r = Nothing
        End If
        If minutes > 0 And minutes < 10 Then
            r = r & "0" & minutes & ":"
        ElseIf minutes >= 10 Then
            r = r & minutes & ":"
        ElseIf minutes = 0 Then
            r = r & "00:"
        End If
        If seconds > 0 And seconds < 10 Then
            r = r & "0" & seconds
        ElseIf seconds >= 10 Then
            r = r & seconds
        ElseIf seconds = 0 Then
            r = "00"
        End If
        Return r
    End Function

basicamente chamando essa função devia converter um nº de segundos por ex 335 segundos em 5:35 (minutos:segundos)

mas por exemplo ao converter 335 para o formato mm:ss ele muda de 5:35 para 6:35 e não consigo preceber porque :S

alguma ajuda?

Share this post


Link to post
Share on other sites
mjamado

O VB.NET tem dois tipos de divisão, a divisão "humana" (operador "/"), onde o valor resultante é arredondado, e a divisão inteira (operador "\"), onde a parte decimal da operação é simplesmente descartada.

Tu estás a usar o "/", e está-te a arredondar, quando queres a divisão inteira. Usa "\".


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
Caça

Usa um TimeSpan

Dim T As New TimeSpan(0, 0, Segundos)
Console.Write(T.ToString)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Windows Dragon

Obrigado caça e mjamado pela vossa ajuda vou manter o codigo que tinha incialmente apenas fazendo a alteração que o mjamado indicou

Muito obrigado a ambos ;)

Share this post


Link to post
Share on other sites
ribeiro55

E para as verificações finais, utiliza o PadLeft em vez daquela ifada toda :P

        r &= minutes.ToString.PadLeft(2,"0") & ":"
        r &= seconds.ToString.PadLeft(2,"0")


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.