private string CalcolaDataNascita(string strDataNascita, char chrSesso, ref string strErrore) //Calcola una stringa di 4 caratteri in cui i primi 2 sono l'anno (del 1900) //segue un carattere rappresentante il mese, infine, seguono le due //cifre del giorno di nascita. Se si tratta di una donna il giorno di nascita //viene aumentato di 40. Es. maschio 20/12/1971->71T20 // //La data deve essere nel formato: "GG/MM/YYYY" o "GG/MM/YY" { const string strMesiCF = "ABCDEHLMPRST"; infoTipoData mioTipoData; int intGiorno = 0; int intMese = 0; string strCodData = ""; strDataNascita = strDataNascita.Trim(); chrSesso = chrSesso.ToString().ToUpper()[0]; //Trasformo il carattere in maiuscolo //Sesso imprevisto? -> Errore if ((chrSesso != 'M') && chrSesso != 'F') { strErrore = "Sesso imprevisto! \n <CF_PIVA.CalcolaDataNascita>."; return(""); } mioTipoData = new infoTipoData(); //Calcolo l'ANNO if (!TrasformaDataOk(strDataNascita, ref mioTipoData, ref strErrore)) { return(""); } if (mioTipoData.anno < 9) { strCodData = '0' + mioTipoData.anno.ToString(); } else { strCodData = mioTipoData.anno.ToString(); } //Calcolo il MESE intMese = (int)mioTipoData.mese - 1; strCodData = strCodData + strMesiCF[intMese]; //Calcolo il GIORNO if (chrSesso == 'F') //Femmina? { intGiorno = (int)mioTipoData.giorno + 40; } else { intGiorno = (int)mioTipoData.giorno; } if (intGiorno < 9) { strCodData = strCodData + '0' + intGiorno.ToString(); } else { strCodData = strCodData + intGiorno.ToString(); } return(strCodData); }
private bool TrasformaDataOk(string strData, ref infoTipoData dataOut, ref string strErrore) //Esegue ctrl semantico e sintattico su una data in formato stringa //La data deve essere nel formato: 01/01/1971 o 01/01/71 { bool blnEsito = false; string strDataNascita = ""; DateTime dtDataTest = DateTime.Today; dataOut.anno = ConvertiStringaAnno(strData, ref strErrore); if (dataOut.anno == 0 && strErrore != "") { return(false); } dataOut.mese = ConvertiStringaMese(strData, ref strErrore); if (dataOut.mese == 0) { return(false); } dataOut.giorno = ConvertiStringaGiorno(strData, ref strErrore); if (dataOut.giorno == 0) { return(false); } //Verifico che la data sia semanticamente corretta try { strDataNascita = dataOut.giorno.ToString() + "/" + dataOut.mese.ToString() + "/" + dataOut.anno.ToString(); dtDataTest = DateTime.Parse(strDataNascita); blnEsito = true; } catch { strErrore = "Data inesistente o errata! <CF_PIVA.TrasformaDataOk>"; } return(blnEsito); }
private bool TrasformaDataOk(string strData,ref infoTipoData dataOut, ref string strErrore) //Esegue ctrl semantico e sintattico su una data in formato stringa //La data deve essere nel formato: 01/01/1971 o 01/01/71 { bool blnEsito = false; string strDataNascita = ""; DateTime dtDataTest = DateTime.Today; dataOut.anno = ConvertiStringaAnno(strData,ref strErrore); if (dataOut.anno == 0 && strErrore != "") return false; dataOut.mese = ConvertiStringaMese(strData,ref strErrore); if (dataOut.mese == 0) return false; dataOut.giorno = ConvertiStringaGiorno(strData,ref strErrore); if (dataOut.giorno == 0) return false; //Verifico che la data sia semanticamente corretta try { strDataNascita = dataOut.giorno.ToString()+"/"+dataOut.mese.ToString()+"/"+dataOut.anno.ToString(); dtDataTest = DateTime.Parse(strDataNascita); blnEsito = true; } catch { strErrore = "Data inesistente o errata! <CodiceFiscale.TrasformaDataOk>"; } return blnEsito; }
private string CalcolaDataNascita(string strDataNascita, char chrSesso,ref string strErrore) //Calcola una stringa di 4 caratteri in cui i primi 2 sono l'anno (del 1900) //segue un carattere rappresentante il mese, infine, seguono le due //cifre del giorno di nascita. Se si tratta di una donna il giorno di nascita //viene aumentato di 40. Es. maschio 20/12/1971->71T20 // //La data deve essere nel formato: "GG/MM/YYYY" o "GG/MM/YY" { const string strMesiCF = "ABCDEHLMPRST"; infoTipoData mioTipoData; int intGiorno = 0; int intMese = 0; string strCodData = ""; strDataNascita = strDataNascita.Trim(); chrSesso = chrSesso.ToString().ToUpper()[0];//Trasformo il carattere in maiuscolo //Sesso imprevisto? -> Errore if ((chrSesso!='M') && chrSesso!='F') { strErrore = "Sesso imprevisto! \n <CodiceFiscale.CalcolaDataNascita>."; return ""; } mioTipoData = new infoTipoData(); //Calcolo l'ANNO if (!TrasformaDataOk(strDataNascita,ref mioTipoData, ref strErrore)) return ""; if (mioTipoData.anno<9) strCodData = '0' + mioTipoData.anno.ToString(); else strCodData = mioTipoData.anno.ToString(); //Calcolo il MESE intMese = (int)mioTipoData.mese - 1; strCodData = strCodData + strMesiCF[intMese]; //Calcolo il GIORNO if (chrSesso=='F') //Femmina? intGiorno = (int)mioTipoData.giorno + 40; else intGiorno = (int)mioTipoData.giorno; if (intGiorno <= 9) strCodData = strCodData + '0' + intGiorno; else strCodData = strCodData + intGiorno; return strCodData; }