|
|
|
|
Strumenti |
12-07-2021, 17:12 | #1 |
Member
Iscritto dal: Sep 2008
Messaggi: 57
|
Visual Studio C# Aggiornare l'età conoscendo la data di nascita.
Buongiorno,
gentilmente chiedo un suggerimento per il calcolo su un programma con DataGridView. Riesco a calcolare i giorni e trovo difficoltà per ricalcolare l'età conoscendo la data di nascita. Conosco: DataGridView.Rows[i].Cells[1].Value; (Data Corrente 12/07/2021) DataGridView.Rows[i].Cells[2].Value; (Data di Nascita 12/07/1999) DataGridView.Rows[i].Cells[3].Value; (Data che Festeggia 12/07/2022) DataGridView.Rows[i].Cells[4].Value; (Età che non riesco a calcolare) DataGridView.Rows[i].Cells[5].Value; (Data rimanenza giorni - 365) Auguro che possiate suggerire, Anticipatamente ringrazio. Domenico. |
12-07-2021, 18:58 | #2 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
|
13-07-2021, 07:15 | #3 |
Member
Iscritto dal: Sep 2008
Messaggi: 57
|
Gent.mo Misterx,
conosco l'articolo che mi ha dato lo spunto per calcolare i dati sulle TextBox e successivamente inserire sul DGV e salvare in XML. Ho provato a ricalcolare dal DGV senza successo e mi sottolinea in rosso: "Impossibile applicare l'operatore "-". Il codice usato: for (int i = 0; i < DataGridView.RowCount; i++) DataGridView.Rowws[i].Cells[4].Value = DateTime.Now.AddYears(+1).ToString("yyyy") - Data_Nascita.Value.ToString("yyyy"); Ringrazio della Disponibilità e fiducioso, saluto Domenico. |
13-07-2021, 07:54 | #4 |
Member
Iscritto dal: Sep 2008
Messaggi: 57
|
Faccio seguito alla precedente che ho notato che il codice inserito è a metà forse dovuto al copia ed incolla:
Riporto il codice; DataGridView.Rowws[i].Cells[4].Value = DateTime.Now.AddYears(+1).ToString("yyyy") - Data_Nascita.Value.ToString("yyyy"); Grazie |
13-07-2021, 09:37 | #5 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
prova così e vedi cosa calcola
Codice:
DataGridView.Rowws[i].Cells[4].Value = DateTime.Now.AddYears(+1) - Data_Nascita.Value; |
13-07-2021, 12:43 | #6 |
Member
Iscritto dal: Sep 2008
Messaggi: 57
|
Gent.mo,
con il codice suggerito alla rispettiva colonna viene inserito il seguente calcolo: 365.00:00:00.0624981 e non l'età. Ringrazio e fiducioso, saluto. Domenico. |
13-07-2021, 15:51 | #7 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 541
|
Un metodo del genere
Codice:
int nYears(DateTime start, DateTime end) { return (end.Year - start.Year - 1) + (((end.Month > start.Month) || ((end.Month == start.Month) && (end.Day >= start.Day))) ? 1 : 0); } Codice:
anni = nYears(Data_Nascita, DateTime.Now); |
13-07-2021, 17:18 | #8 |
Member
Iscritto dal: Sep 2008
Messaggi: 57
|
Gent.mo Lorenzo001,
nel ringraziare della gentilezza, ho provato e l'età risulta 0. Domenico |
14-07-2021, 04:51 | #9 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 541
|
Non so come hai provato e cosa hai scritto ma evidentemente la Data di nascita che hai usato è sbagliata.
La funzione è corretta e del resto non dai nessuna indicazione, cosa risponderti? |
14-07-2021, 06:30 | #10 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
non conosco c# ma con un compilatore online ho pasticciato col codice di lorenzo001 e funziona: più di così
incolla il codice qui sotto a questo link https://dotnetfiddle.net/ e mandalo in esecuzione Codice:
using System; public class MyDate { public static int nYears(DateTime start, DateTime end) { return (end.Year - start.Year - 1) + (((end.Month > start.Month) || ((end.Month == start.Month) && (end.Day >= start.Day))) ? 1 : 0); } } public class Program { public static void Main() { DateTime d1 = new DateTime(1800, 12, 25); int anni = MyDate.nYears(d1, DateTime.Now); Console.WriteLine("differenza: " + anni + " anni"); } } |
14-07-2021, 08:12 | #11 |
Member
Iscritto dal: Sep 2008
Messaggi: 57
|
Gent.mo MisterX,
ringrazio della disponibilità e del Link funziona ora dovrò inserire nel programma sperando di riuscire. Auguro una buona giornata, saluto. Domenico. |
14-07-2021, 08:13 | #12 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 541
|
Anche prima funzionava quando ti ho risposto, ma tu hai detto che non andava. Cosa è cambiato? Cosa hai scritto?
Continui a NON MOSTRARE il tuo codice. Questa tua richiesta è un po' confusa. Ultima modifica di lorenzo001 : 14-07-2021 alle 08:16. |
14-07-2021, 08:54 | #13 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
Quote:
Codice:
using System; public class Program { public static int nYears(DateTime start, DateTime end) { return (end.Year - start.Year - 1) + (((end.Month > start.Month) || ((end.Month == start.Month) && (end.Day >= start.Day))) ? 1 : 0); } public static void Main() { DateTime d1 = new DateTime(1800, 12, 25); int anni = nYears(d1, DateTime.Now); Console.WriteLine("differenza: " + anni + " anni"); } } |
|
14-07-2021, 09:26 | #14 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 541
|
Domenico (alias Pacifico437) scrive da molto tempo (almeno dal 2012) e continua a fare l'errore di non andare a fondo alle questioni ma cercare il codice pronto da chi risponde.
Purtroppo così non impara nulla. https://forum.html.it/forum/showthre...readid=2975121 https://masterdrive.it/c-47/differenza-date-103140/ Ultima modifica di lorenzo001 : 14-07-2021 alle 09:36. |
14-07-2021, 10:19 | #15 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
Quote:
|
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:34.