Calcolo età

sabato 13 giugno 2009 - 20.21

Anonimo Profilo | Senior Member

salve è possibile ricavare l'età dell'utente con una data scritta cosi: 29/01/1982 (esempio).

grazie.

balfaz Profilo | Expert

chiaro di si!!!, basta solo per primo fare una mascherina per farsi che la data introdotta sia sempre nel formato giusto (oppure fai delle validazioni), poi metti questo campo o valore dentro una variabile tipo date e fai semplicemente una sottrazione della la data odierna meno la data di nascita puoi calcolare tranquillamente quanti anni, mesi e giorni ha fino a quel momento, usa la istruzione
Convert.ToDateTime(txtDate1.Text).Subtract(Convert.ToDateTime(txtDate2.Text)).years se non sbaglio
Dove troverai sempre una mano disposta ad aiutarti è nell'estremo del tuo proprio braccio

zami Profilo | Junior Member

Ciao!

>basta solo per primo fare una mascherina per
>farsi che la data introdotta sia sempre nel formato giusto (oppure
>fai delle validazioni), poi metti questo campo o valore dentro
>una variabile tipo date

Giustissimo, però implementando delle validazioni o una mascherina otterrai sempre e comunque uan data col formato "GG/MM/AAAA" (che per l'appunto è lo scopo della validazione) col risultato che se il sistema su cui usi il software ha una lingua diversa dall'italiano, inserendo la stringa in una variabile di tipo Date (facendo la conversione implicita) rischi che generi un errore.

Dovresti indicare il formato dell'input, o così:

Public Function toDateTime(ByVal paDataGG_MM_AAAA As String) As DateTime Dim myCultureInfo As New System.Globalization.CultureInfo("it-IT", True) Dim loFormato As String = "dd/MM/yyyy" Return System.DateTime.ParseExact(paDataGG_MM_AAAA, loFormato, myCultureInfo) End Function

o più brutalmente così:

'Array di stringhe Dim loArrData As String() Dim loData As DateTime 'Col metodo Split genero un array dalla stringa inserita nella textbox, dividendola sullo slash loArrData = Text1.Text.Split("/") 'Assegno un elemento alla volta, il giorno il mese e l'anno, alla data loData.Day = loArrData(0) loData.Month= loArrData(1) loData.Year = loArrData(2)


Questo secondo sistema è elegante come un colpo d'ascia, ma mi dà la sensazione di avere un controllo molto fermo sul processo del passare una stringa in data :P

Ciao
Michela
"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"
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 !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5