Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [VB] Differenza orario

  1. #1

    [VB] Differenza orario

    Da questo codice qualcuno mi saprebbe dire perchè se faccio una differenza tra un 29/07/2002 12.40.21 e un 30/07/2002 12.40.20, mi dà i sencondi negativi?
    codice:
    Dim datTimer1 As Date, datTimer2 As Date
    Public Sub cdmTimer1_Click()
        datTimer1 = Now
        txtTimer1.Text = datTimer1
    End Sub
    
    Public Sub cmdTimer2_Click()
        datTimer2 = Now
        txtTimer2.Text = datTimer2
    End Sub
    Private Sub cmdDiff_Click()
        datTimer1 = txtTimer1.Text
        datTimer2 = txtTimer2.Text
        Dim intDDiff As String
        
        intDDiff = (DatePart("d", datTimer2) - DatePart("d", datTimer1)) * 24
            If DatePart("n", datTimer2) - DatePart("n", datTimer1) < 0 Then
                If DatePart("s", datTimer2) - DatePart("s", datTimer1) < 0 Then
                    intDDiff = intDDiff + DatePart("h", datTimer2) - DatePart("h", datTimer1) - 1
                    intDDiff = intDDiff & ":"
                    intDDiff = intDDiff & DatePart("n", datTimer2) - DatePart("n", datTimer1) + 59
                    intDDiff = intDDiff & ":"
                    intDDiff = intDDiff & DatePart("s", datTimer2) - DatePart("s", datTimer1) + 60
                Else
                    intDDiff = intDDiff + DatePart("h", datTimer2) - DatePart("h", datTimer1) - 1
                    intDDiff = intDDiff & ":"
                    intDDiff = intDDiff & DatePart("n", datTimer2) - DatePart("n", datTimer1) + 60
                    intDDiff = intDDiff & ":"
                    intDDiff = intDDiff & DatePart("s", datTimer2) - DatePart("s", datTimer1)
                End If
            Else
                If DatePart("s", datTimer2) - DatePart("s", datTimer1) < 0 Then
                    intDDiff = intDDiff + DatePart("h", datTimer2) - DatePart("h", datTimer1) - 1
                    intDDiff = intDDiff & ":"
                    intDDiff = DatePart("n", datTimer2) - DatePart("n", datTimer1)
                    intDDiff = intDDiff & ":"
                    intDDiff = intDDiff & (DatePart("s", datTimer2) + 60) - DatePart("s", datTimer1)
                End If
                intDDiff = (DatePart("d", datTimer2) - DatePart("d", datTimer1)) * 24
                intDDiff = intDDiff + DatePart("h", datTimer2) - DatePart("h", datTimer1)
                intDDiff = intDDiff & ":"
                intDDiff = intDDiff & DatePart("n", datTimer2) - DatePart("n", datTimer1)
                intDDiff = intDDiff & ":"
                intDDiff = intDDiff & DatePart("s", datTimer2) - DatePart("s", datTimer1)
            End If
        lblDiff.Caption = intDDiff
    End Sub
    Grazie
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Perchè fai la differenza fra datTimer2 e datTimer1, cioè fra una data minore e una maggiore .

    Puoi risolvere in due modi: nell'assegnazione dei valori o nell'effettuare la differenza.

    Nel primo caso:
    codice:
    Public Sub cmdTimer1_Click()
        datTimer2 = Now
        txtTimer1.Text = CStr(datTimer2)
    End Sub
    
    Public Sub cmdTimer2_Click()
        datTimer1 = Now
        txtTimer2.Text = CStr(datTimer1)
    End Sub
    Nel secondo caso:
    codice:
      intDDiff = intDDiff + DatePart("h", datTimer1) - DatePart("h", datTimer2)
      intDDiff = intDDiff & ":"
      intDDiff = intDDiff & DatePart("n", datTimer1) - DatePart("n", datTimer2)
      intDDiff = intDDiff & ":"
      intDDiff = intDDiff & DatePart("s", datTimer1) - DatePart("s", datTimer2)
    Ciao.

  3. #3
    No, guarda se ti faccio vedere il codice a cui sono arrivato ti spaventi... è tutto il giorno che su questo problemino.
    Voglio calcolare il tempo trascorso tra due momenti nel tempo. In ore, minuti e secondi.
    Del tipo che se il
    primo campionamento è il 10/01/02 16:10:00
    ed il secondo il 12/01/02 alle 15:09:00

    Non voglio che mi sengo le ore in negativo (anche perchè mi darebbe errore). Esiste un sistema per calcolare il tempo con un numero assoluto o qualche idea del genere?
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  4. #4

    FATTO!!!!

    Tadaaaa
    codice:
    Function Intervallo(Prima, Poi)
    
        Dim intDDiff As String, intH As Integer, intN As Integer, intS As Integer, intD As Integer
        Dim intM As Integer, intY As Integer
        
        intM = DatePart("m", Prima)
        intD = DatePart("d", Poi) - DatePart("d", Prima)
        intH = DatePart("h", Poi) - DatePart("h", Prima)
        intN = DatePart("n", Poi) - DatePart("n", Prima)
        intS = DatePart("s", Poi) - DatePart("s", Prima)
        If intD < 0 Then
            Select Case DatePart("m", Prima)
                Case 1, 3, 5, 7, 8, 10, 12
                intD = intD + 31
                Case 4, 6, 9, 11
                intD = intD + 30
                Case 2
                intD = intD + 28
            End Select
        End If
        intH = intD * 24 + intH 'Aggiungo 24 ore se si supera il giorno di differenza
        
        If intS < 0 Then
            intS = intS + 60
            intN = intN - 1
            If intN < 0 Then
                intN = intN + 60
                intH = intH - 1
            End If
        Else
            If intN < 0 Then
                intN = intN + 60
                intH = intH - 1
            End If
        End If
        intDDiff = intH & ":" & intN & ":" & intS
        Intervallo = intDDiff
        
    End Function
    interessa...:metallica :metallica :metallica
    Questo era quello che volevo... se poi a qualcuno serve, tutto vostro ciao!!!
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.