Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Dividere la data per 2 applicazione in visual studio 2005
mercoledì 21 maggio 2008 - 13.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mer 21 mag 2008 - 13:51
Salve a tutti quello che stò per chiedere è un pò urgente e non riesco a venirne fuori qulcuno può aiutarmi?
Espongo il problema ho scritto questo codice che mi serme per trovare il risultato in anni mesi e giorni dalla differenza tra due date (posto il codice)
Public Function CalcolaAnni(ByVal InizioTextBox As Date, ByVal FineTextBox As Date)
'ANNI
Dim VarAnni As Object
VarAnni = DateDiff("yyyy", InizioTextBox, FineTextBox)
If FineTextBox < DateSerial(FineTextBox.Year, InizioTextBox.Month, InizioTextBox.Day) Then
VarAnni = VarAnni - 1
Me.TextBox1.Text = VarAnni
End If
Me.TextBox1.Text = VarAnni
'--------------------------------
'MESI
Dim VarMesi As Object
VarMesi = DateDiff("m", InizioTextBox, FineTextBox)
VarMesi = VarMesi - (VarAnni * 12)
If DatePart("d", InizioTextBox) > DatePart("d", FineTextBox) Then
VarMesi = VarMesi - 1
Me.TextBox2.Text = VarMesi
End If
Me.TextBox2.Text = VarMesi
'--------------------------------
'GIORNI
Dim GiornoInizio As Object
Dim GiornoFine As Object
Dim giorni As Object
Dim TempGiornoInizio As Object
GiornoInizio = DatePart("d", InizioTextBox)
GiornoFine = DatePart("d", FineTextBox)
If GiornoFine >= GiornoInizio Then
giorni = GiornoFine - GiornoInizio
Me.TextBox3.Text = giorni + 1
Else
TempGiornoInizio = DateAdd("m", -1, FineTextBox)
giorni = DateDiff("d", TempGiornoInizio, FineTextBox) - (GiornoInizio - GiornoFine)
Me.TextBox3.Text = giorni + 1
End If
End Function
Adesso mi servirebbe che la differenza tra due date mi desse il risultato esattamente diviso per 2 cioè vi faccio un esempio
Se ho le seguenti date 21/10/1970 e 23/10/1973 il risultato è 3 anni 0 mesi 2 giorni io ho la necessità di dividerli per 2 e quindi il risultato diventa
1 anno 6 mesi 1 giorno qualcuno può aiutarmi grazie in anticipo.
Mau67
assiolle
Profilo
| Junior Member
88
messaggi | Data Invio:
mer 21 mag 2008 - 14:54
Io cambierei la logica.
Farei una funzione che mi ritorna il numero di giorni.
15/05/2003 al 15/05/2008 -> 1825 giorni. Quindi dividerei per 2, arrotondando al giorno. Quindi 913 giorni.Infine una funzione che secondo il numero di giorni complessivo ti ritorna Anni,Mesi e Giorni.
Alessio
http://blogs.dotnethell.it/alessiop
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mer 21 mag 2008 - 16:09
Grazie della risposta ho risolto in questo modo se servisse a qualcuno
Dim Virtuale As Date = Me.FineTextBox.Text
Dim giorni As Double
giorni = DateDiff("d", Me.InizioTextBox.Text, Me.FineTextBox.Text)
giorni = Virtuale.ToOADate - CInt(giorni / 2)
Me.FineMetàTextBox.Text = Date.FromOADate(giorni)
Praticamente ho trovato la differenza tra due date in giorni, li ho divisi per 2 e li ho sottratti alla data fineTextBox trasformandola in data e poi ho usato la funzione pubblica che mi calcola i giorni mesi ed anni cosi
Public Function CalcolaAnniMetà(ByVal InizioTextBox As Date, ByVal FineMetàTextBox As Date)
'ANNI
Dim VarAnni As Object
VarAnni = DateDiff("yyyy", InizioTextBox, FineMetàTextBox)
If FineMetàTextBox < DateSerial(FineMetàTextBox.Year, InizioTextBox.Month, InizioTextBox.Day) Then
VarAnni = VarAnni - 1
Me.TextBox1.Text = VarAnni
End If
Me.TextBox1.Text = VarAnni
'--------------------------------
'MESI
Dim VarMesi As Object
VarMesi = DateDiff("m", InizioTextBox, FineMetàTextBox)
VarMesi = VarMesi - (VarAnni * 12)
If DatePart("d", InizioTextBox) > DatePart("d", FineMetàTextBox) Then
VarMesi = VarMesi - 1
Me.TextBox2.Text = VarMesi
End If
Me.TextBox2.Text = VarMesi
'--------------------------------
'GIORNI
Dim GiornoInizio As Object
Dim GiornoFine As Object
Dim giorni As Object
Dim TempGiornoInizio As Object
GiornoInizio = DatePart("d", InizioTextBox)
GiornoFine = DatePart("d", FineMetàTextBox)
If GiornoFine >= GiornoInizio Then
giorni = GiornoFine - GiornoInizio
Me.TextBox3.Text = giorni + 1
Else
TempGiornoInizio = DateAdd("m", -1, FineMetàTextBox)
giorni = DateDiff("d", TempGiornoInizio, FineMetàTextBox) - (GiornoInizio - GiornoFine)
Me.TextBox3.Text = giorni + 1
End If
End Function
Ciao a tutti
Mau67
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !