Het controleren van de Datum formaat van een string in C#

Ik wil controleren of een string bevat data zoals 1/01/2000 en 10/01/2000 in dd/MM/yyyy formaat.

Zo ver heb ik het geprobeerd.

DateTime dDate = DateTime.Parse(inputString);
string.Format("{0:d/MM/yyyy}", dDate); 

Maar hoe kan ik controleren of dat formaat is juist om te throw an exception?

 

8 Replies
  1. 22
    string inputString = "2000-02-02";
    DateTime dDate;
    
    if (DateTime.TryParse(inputString, out dDate))
    {
        String.Format("{0:d/MM/yyyy}", dDate); 
    }
    else
    {
        Console.WriteLine("Invalid"); //<-- Control flow goes here
    }
  2. 11

    kunt u gebruik maken van DateTime.ParseExact met de format string

    DateTime dt = DateTime.ParseExact(inputString, formatString, System.Globalization.CultureInfo.InvariantCulture);

    Boven is, gooit een uitzondering als de opgegeven tekenreeks niet in een bepaald format.

    gebruik DateTime.TryParseExact als u geen uitzondering in geval van indeling onjuist, maar je kunt controleren of de geretourneerde waarde van die methode om vast te stellen of het parseren van waarde succes wordt of niet.

    controleren Aangepaste Datum-en tijdnotatie Strings

    • Maar zal het ook check de data met single digit voor de day bijvoorbeeld: 1/01/2000
    • u beslist wat u nodig hebt om de datum en tijd formaat string, d alleen betekent dat er geen nul, dd betekent dat het zal toevoegen nul voor één dag waarde, als u meerdere geldige datum en tijd formaten kun je beter gebruik maken één van overbelasting methode van DateTime.ParseExact het aanvaarden van meerdere datetime formaten
    • De bovenstaande code opgeslagen in de tijd met het voor een bepaalde reden.
  3. 1

    https://msdn.microsoft.com/es-es/library/h9b85w22(v=vs. 110).aspx

    string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
                         "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
                         "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
                         "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
                         "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
      string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", 
                              "5/1/2009 6:32:00", "05/01/2009 06:32", 
                              "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}; 
      DateTime dateValue;
    
      foreach (string dateString in dateStrings)
      {
         if (DateTime.TryParseExact(dateString, formats, 
                                    new CultureInfo("en-US"), 
                                    DateTimeStyles.None, 
                                    out dateValue))
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         else
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
      }
  4. 1

    Kunt u hieronder IsValidDate():

     public static bool IsValidDate(string value, string[] dateFormats)
        {
            DateTime tempDate;
            bool validDate = DateTime.TryParseExact(value, dateFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, ref tempDate);
            if (validDate)
                return true;
            else
                return false;
        }

    En u kunt geven in de waarde-en datumnotaties. Bijvoorbeeld:

    var data = "02-08-2019";
    var dateFormats = {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}
    
    if (IsValidDate(data, dateFormats))
    {
        //Do something
    }
    else
    {
        //Do something else
    }
  5. 0

    kunt u altijd proberen:

    Regex r = new Regex(@"\d{2}/\d{2}/\d{4}");
    
    r.isMatch(inputString);

    dit zal controleren dat de tekenreeks in de notatie “02/02/2002”
    u moet misschien een beetje meer als je wilt om ervoor te zorgen dat er een geldige datum in als dd/mm/jjjj

    • Geef uitleg terwijl u antwoord
  6. 0

    Een array van geldige datums opmaken, controleren documenten:

    string[] formats = { "d/MM/yyyy", "dd/MM/yyyy" };
    DateTime parsedDate;
    var isValidFormat= DateTime.TryParseExact(inputString, formats, new CultureInfo("en-US"), DateTimeStyles.None, out parsedDate);
    
    if(isValidFormat)
    {
        string.Format("{0:d/MM/yyyy}", parsedDate);
    }
    else
    {
        //maybe throw an Exception
    }

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *