2016-11-10 4 views
-2

Ich versuche, Strings zu analysieren, um zu sehen, ob sie gültige Daten sind. Ich verwende einige Kulturen und Formate, um verschiedene Variationen der Daten zu decken.Warum gibt der erste Date String false zurück?

Funktionalität funktioniert, der folgende Code scheint gut zu funktionieren, aber ich kann nicht verstehen, warum die erste Zeichenfolge "False" zurückgibt. Ist es keine gültige Datumszeichenfolge von MM-TT-JJJJ Format ?.

public class Program 
     { 

      public static CultureInfo frc = new CultureInfo("fr-FR"); 
      public static CultureInfo usc = new CultureInfo("en-US"); 
      public static CultureInfo gbc = new CultureInfo("en-GB"); 
      public static CultureInfo inc = new CultureInfo("en-IN"); 
      public static string[] dateFormats = { "d-M-yy", "dd-MM-yyyy","d-M-yyyy", "dd MMMM yyyy", "dMyy", "dMyyyy", "d/M/yy", "d/M/yyyy" }; 
      public static void Main() 
      { 
       bool isValidDate = false; 

       string[] listOfDates = { "10-23-2016", "3-01-93", "14-4-1973", "22 Juin 2015", "Mama, I'm comin home!", "06/06/06" }; 
       foreach (var date in listOfDates) 
       { 
        isValidDate = Validate(date, dateFormats); 
        Console.WriteLine("The string is, {0} and the date validity is {1}",date, isValidDate); 
       } 

       Console.ReadLine(); 

      } 


      public static bool Validate(string s, string[] format) 
      { 

       DateTime frDt,enUDt, enGDt, enIDt ; 


       bool fr,engU,engG, engI; 

        CultureInfo[] cis = { frc,usc,gbc,inc }; 
        fr = DateTime.TryParseExact(s, format, cis[0], DateTimeStyles.None, out frDt); 
        engU = DateTime.TryParseExact(s, format, cis[1], DateTimeStyles.None, out enUDt); 
        engG = DateTime.TryParseExact(s, format, cis[2], DateTimeStyles.None, out enGDt); 
        engI = DateTime.TryParseExact(s, format, cis[3], DateTimeStyles.None, out enIDt); 

        if (fr || engU || engG||engI == true) 
        { 
         return true; 
        }   
        return false; 
      } 


     } 
+2

Die erste Saite wäre der 10. Tag des 23. Monats des Jahres 2016, klingt das richtig für Sie? –

+0

Bearbeitete die Frage jetzt. Es ist tatsächlich von MM-TT-JJJJ-Format, 23. Oktober 2016. – AKrishna

+0

Okay, Editting der Quesikn ändert nicht die Tatsache, dass Sie nie tatsächlich für dieses Format in Ihrem Code Konto –

Antwort

4

Der erste Termin Zeichenfolge ist 10-23-2016

23 kein gültiger Monat. Also wird dd-MM-yyyy scheitern.

Verwandte Themen