Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Confronti fra orari

  1. #1
    Utente di HTML.it L'avatar di Kian
    Registrato dal
    Oct 2003
    Messaggi
    31

    Confronti fra orari

    Ciao.
    Ho un problema che mi fa perdere il sonno.
    Io lo trovo assurdo...ma DEVE esserci una spiegazione!
    Supponete che ho due valori Date.
    Solo orari...
    A = 13.20.00
    B = 13.40.00
    E due valori integer... (Esprimono i minuti)
    C = 80
    D = 60
    Utilizzando il metodo AddDate in questo modo:
    Primo orario = AddDate("n",C,A)
    Secondo orario= AddDate("n",D,B)
    Ottengo ovviamente:
    Primo orario = 14.40.00
    Secondo orario = 14.40.00
    Ovviamente (secondo me) se pongo questo IF
    IF Primo orario > Secondo orario Then
    ..........
    Else
    ...............
    dovrebbe andare su Else....E INVECE NO!Secondo il codice l'espressione
    "Primo orario > Secondo orario" è vera!
    Ho anche pensato che fosse una questione di date ma se uso il sistema
    Int(A) e Int(B) per isolare eventuali date mi restituise in ntrambi i casi 0.00.0000.
    Ora....secondo voi, cosa succede?
    Vi è mai capitata una cosa del genere?
    Grazie....

  2. #2
    Credo sia un bug di VB6 dovuto agli arrotondamenti in floating-point, tra l'altro non lo fa sempre ma solo con certi valori (come quelli che hai indicato tu). Probabilmente è colpa del metodo DateAdd, che nel variant restituito lascia qualche bit "sporco" anche se non visibile convertendolo in Double. Come conferma di questa ipotesi, basta "pulire" la variabile Date dopo aver eseguito il calcolo:
    codice:
    Dim d1 As Date
    Dim d2 As Date
    Dim inc1 As Integer
    Dim inc2 As Integer
    
    d1 = #1:20:00 PM#
    d2 = #1:40:00 PM#
    
    inc1 = 80
    inc2 = 60
    
    'calcolo
    d1 = DateAdd("n", inc1, d1)
    d2 = DateAdd("n", inc2, d2)
    
    'pulizia
    d1 = TimeSerial(Hour(d1), Minute(d1), Second(d1))
    d2 = TimeSerial(Hour(d2), Minute(d2), Second(d2))
    
    Debug.Print d1 = d2       'restituisce True
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    6

    Re: Confronti fra orari

    A parte il fatto che nel confronto si potrebbe usare DateValue() quindi:
    codice:
    If DateValue(d1) > DateValue(d2) Then
       ....
    else
       ....
    End If
    ..a me il confronto funziona benissimo, nessun malfunzionamento.
    Ho Win XP e VB6.

  4. #4
    Utente di HTML.it L'avatar di Kian
    Registrato dal
    Oct 2003
    Messaggi
    31
    Grazie Tas! La "pulizia" risolve il problema!

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.