Question

Existe-t-il un algorithme préféré pour convertir une année à 2 chiffres en une année à 4 chiffres?

J'ai une date de naissance à 2 chiffres (avec mois et jour) que je souhaite convertir en C # DateTime. Évidemment, les dates de naissance ne peuvent pas être dans le futur, mais existe-t-il une installation existante dans .NET pour convertir une année à deux chiffres en une année à quatre chiffres?

Était-ce utile?

La solution

static int GetFourDigitYear(int year, int maxYear) 
{
    System.Globalization.GregorianCalendar cal = 
          new System.Globalization.GregorianCalendar();
    cal.TwoDigitYearMax = maxYear;
    return cal.ToFourDigitYear(year);
}

maxYear devrait être l'année actuelle à quatre chiffres.

Modifier : la solution OP:

static int GetFourDigitYear(int year, int pivot) 
{
    System.Globalization.GregorianCalendar cal = 
          new System.Globalization.GregorianCalendar();
    cal.TwoDigitYearMax = new DateTime.Year + (100-pivot);
    return cal.ToFourDigitYear(year);
}

Autres conseils

Différents systèmes utilisent des dates de points d'arrêt différentes en fonction des exigences de données sous-jacentes.

Dans votre cas, il est fort probable que vous supposiez que les années 00 à 09 correspondent à 2000+, tandis que les autres valeurs (10 à 99) correspondent à 1900 +.

La question que vous devez vous poser est la suivante: quelle est la probabilité que des personnes de plus de 100 ans soient enregistrées comme étant actuellement dans votre système.

Vous devez faire ce calcul exactement une fois, le stocker et conserver tout votre code en utilisant des années à 4 chiffres.

il me semblerait que si une personne est potentiellement née le 3 janvier 2007, la probabilité qu’elle soit née le même jour de la semaine 100 ans plus tôt est légèrement inférieure à 1/7. Si cette probabilité est trop élevée pour vous, alors je doute qu’il existe un bon moyen de l’automatiser sauf si vous enregistrez également leur âge.

modifier: bien sûr, il existe une formule (connaissant algorithmiquement le fonctionnement du calendrier) qui réduira cette probabilité ... mais au final, vous aurez toujours des résultats erronés si vous ne stockez pas leur âge.

modifier 2: bien sûr, si vous avez leur âge, vous n'avez pas besoin d'un algorithme de calendrier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top