Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303

    VB.NET]Problema con calcolo dei giorni

    io ho una listbox popolata con tutti i giorni dell'anno
    popolata in questo modo;
    codice:
    Dim s As Long = ListBox3.Text.Substring(6, 4)
            For i As Long = 1 To 12
                For z As Long = 1 To Date.DaysInMonth(s, i)
                    Dim da = z.ToString("00") & "/" & i.ToString("00") & "/" & s
                    Application.DoEvents()
                    ListBox4.Items.Add(da)
                Next
            Next
    bene, la listbox3 ha una data iniziale, in base ad un certo numero che potrebbe essere:

    [12 o 8 o 6 o 4]
    se 12 il valore in giorni è 30
    se 8 il ......................è 45
    se 6 il ......................è 60
    se 4 il ......................è 90

    ad un bottone
    eseguo:
    dove mese è il corrispondente di 12
    codice:
     Select Case mese
    
                    Case Is = 12
                        'ListBox4.Items(30)
    
                        Dim periodo = Date.DaysInMonth(ListBox3.Text.Substring(6, 4), ListBox3.Text.Substring(3, 2))
                        Dim inizio = ListBox3.Text.Replace(ListBox3.Text.Substring(3, 2), "02")
                        Dim index As Integer = ListBox4.FindString(inizio)
    
                        For i As Integer = index To index + Date.DaysInMonth(ListBox3.Text.Substring(6, 4), 2)  '30
                            If Date.DaysInMonth(ListBox3.Text.Substring(6, 4), 2) <> 31 Then
                                Dim differenza = 31 - Date.DaysInMonth(ListBox3.Text.Substring(6, 4), 2)
                                Min.Text = ListBox4.Items(index + 1 - differenza)
                                Mout.Text = ListBox4.Items(index - differenza + Date.DaysInMonth(ListBox3.Text.Substring(6, 4), 2))  '30)
                            End If
                        Next
    ma solo nel caso in cui la data iniziale è 01/ la risposta è corretta, invece se la data iniziale diventa ad esempio 15/ il risultato non mi viene restituito correttamente.
    di fatti mi restituisce 14/01/2008 13/02/2008
    invece dovrebbe essere 15/01/2008 14/02/2008.
    dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Scusa, se spieghi in dettaglio cosa devi fare, probabilmente si riesce ad inquadrare meglio la questione.
    Già il fatto di avere un ListBox con tutti i giorni dell'anno mi sembra una cosa strana...

    Ciao

  3. #3
    Utente di HTML.it L'avatar di fu510n
    Registrato dal
    Sep 2005
    Messaggi
    137
    A dire il vero non si è capito gnente di cosa devi fare

    Cmq io ho riscontrato un problema nelle differenze tra date (una differenza comprensiva di Ore minuti e secondi) in quanto in alcuni casi mi restituiva i giorni sbagliati e in negativo.
    Ho risolto facendo le differenze con un TimeSpan e convertendo rispettivamente in Secondi, Minuti, Ore, Giorni, Mesi. (no anni no! ahahah )

    Ciao ciao
    Fusion

    Currency Text Box (Updated: 16 Maggio 2008): http://digilander.libero.it/cmfusion/CurrencyTextBox.html

  4. #4
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    allora io devo a partire da una data di inizio aggiungere un numero di gg e sapere qual'è la data ottenuta
    esempio
    data iniziale 15/01/2008 devo aggiungere esempio 45 giorni ed devo ottenere la data finale

  5. #5
    codice:
    DIM DTINIZIALE AS DATETIME, DTFINALE AS DATETIME
    DTINIZIALE=#15/01/2008#
    DTFINALE= DTINIZIALE.DATE.ADDDAYS(45)
    dimmi se ti funziona
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

  6. #6
    scusa... ho sbagliato... x la data iniziale devi mettere prima il mese e dopo i giorni
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

  7. #7
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da andreaciao_22
    codice:
    DIM DTINIZIALE AS DATETIME, DTFINALE AS DATETIME
    DTINIZIALE=15/01/2008
    DTFINALE= DTINIZIALE.DATE.ADDDAYS(45)
    dimmi se ti funziona
    grazie andreaciao_22, funziona benissimo, così gg/mm/dddd

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.