Frage

Sie haben einen bevorzugten Algorithmus eine 2-stellige Jahr in ein 4-stelliges Jahr für die Umwandlung?

Ich habe eine 2-stellige Geburtsdatum (zusammen mit Monat und Tag), die ich auf eine C # DateTime konvertieren möchten. Obiviously, Geburtsdaten können in Zukunft nicht mehr sein, aber gibt es eine bestehende Anlage in .NET eine 2-stellige Jahr in eine vierstellige Jahreszahl zu konvertieren?

War es hilfreich?

Lösung

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

maxYear sollte das aktuelle vierstellige Jahr.


Bearbeiten : OP-Lösung:

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);
}

Andere Tipps

Verschiedene Systeme verwenden verschiedene Unterbrechungsdaten abhängig von den zugrunde liegenden Datenanforderungen.

In Ihrem Fall ist es sehr wahrscheinlich sicher davon ausgehen, dass die Jahre 00 bis 09 sind 2000+ während alle anderen Werte (10 bis 99) sind 1900 +

Die Frage, die Sie sich stellen sollten, ist: Was ist die Wahrscheinlichkeit, mehr als 100 Jahre alten Menschen als Aufzeichnungen, die derzeit in Ihrem System

.

Sie sollten diese Berechnung tun genau einmal, speichern, und haben alle Ihre Code geht nach vorn 4-stelligen Jahren.

würde es mir vorkommen, dass, wenn eine Person potentiall 3. Januar 2007 geboren ist, dass die Wahrscheinlichkeit, dass sie noch am selben Tag der Woche 100 Jahre früher etwas weniger ist als 1/7 geboren wurden. Wenn diese Wahrscheinlichkeit für Ihre Bedürfnisse anpassen zu hoch ist, dann bezweifle ich, dass es ein guter Weg, dies zu automatisieren, wenn Sie auch ihr Alter speichern.

edit: natürlich gibt es eine Formel (zu wissen, algorithmisch, wie der Kalender funktioniert), die diese Wahrscheinlichkeit senken wird ... aber am Ende, sind Sie wahrscheinlich noch einige fehlerhafte Ergebnisse haben, wenn Sie nicht speichern ihre Alter.

bearbeiten 2: natürlich, wenn man ihr Alter haben, dann brauchen Sie keinen Kalender Algorithmus

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top