Ich versuche, mit sehr alter Formatierung in einer Art von Datei zu lesen.Parsing 2 stellige Daten
Darin wird das Datumsformat im Format yymmdd angegeben, wobei ein zweistelliges Jahr im Bereich [00, 59] als im 21. Jahrhundert und ein Jahr im Bereich [60, 99 ] gilt als im 20. Jahrhundert, so dass 59 das Jahr 2059 und 60 das Jahr 1960 darstellt.
Wie würde ich gehen über das Parsen in DateTime
in C#?
Ich habe zu tun versucht:
string str = ReadDateFromFile();
DateTime dt;
DateTime.TryParseExact(str, "yyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
Aber die Standard-2-stelliger Jahres Regeln behandeln Werte im Bereich [00, 29] als 21. Jahrhunderts und Werte im Bereich [30, 99] als 20. Jahrhundert.
Gibt es eine Möglichkeit, dieses Verhalten zu ändern, um zu tun, was ich will, oder gibt es eine andere Technik, die ich verwenden könnte?
eine Zeile nach 'TryParseExact' hinzufügen 100 Jahren zu subtrahieren, wenn es zwischen 2030 und 2059 ist? –
Sie könnten die Zeichenfolge von einem 2-stelligen Jahres- in ein 4-stelliges Jahr ändern, indem Sie die von Ihnen festgelegten Regeln verwenden, bevor Sie sie an 'TryParseExact' übergeben –
Sie können Ihre eigene' Calendar'-Klasse erstellen, indem Sie den Standard als Vorlage verwenden [Calendar.TwoDigitYearMax] (https://msdn.microsoft.com/en-us/library/system.globalization.calendar.twodigityearmax (v = vs.110) .aspx) Eigenschaft. –