Labels

Thursday, June 25, 2015

C# code to validate Date format

        public static bool IsValidDate(string inputDate, out DateTime parsedDate)
        {
            try
            {
                string changedDate = string.Empty;
                string[] DatePattern = {
                                           "yyyy.mm.dd", "mm/dd/yyyy", "yyyymmdd","mmddyyyy", "mm-dd-yyyy", "yyyy/mm/dd", "yyyy-mm-dd",
                                           "yyyy.m.dd", "m/dd/yyyy", "m-dd-yyyy", "yyyy/m/dd", "yyyy-m-dd",
                                           "yyyy.mm.d", "mm/d/yyyy","mm-d-yyyy", "yyyy/mm/d", "yyyy-mm-d",
                                           "yyyy.m.d", "m/d/yyyy", "m-d-yyyy", "yyyy/m/d", "yyyy-m-d"
                                       };

                if (DateTime.TryParseExact(inputDate, DatePattern, null, DateTimeStyles.None, out parsedDate))
                {                  
                    if (inputDate.IndexOf("-") > 0 || inputDate.IndexOf("/") > 0 || inputDate.IndexOf(".") > 0)
                    {
                        // Edge case scenario's like 09/31/2015 or 02/30/2015
                        DateTime.TryParse(inputDate, null, DateTimeStyles.None, out parsedDate);
                        if (!DateTime.MinValue.ToShortDateString().Equals(parsedDate.ToShortDateString()))
                        {
                            return true;
                        }
                    }
                    else
                    {
                        if (Convert.ToInt32(inputDate.Substring(0, 2)) <= 12)
                        {
                            changedDate = inputDate.Substring(0, 2) + "/" + inputDate.Substring(2, 2) + "/" + inputDate.Substring(4);                        
                        }
                        else
                        {                        
                            changedDate = inputDate.Substring(4, 2) + "/" + inputDate.Substring(6) + "/" + inputDate.Substring(0,4);                          
                        }
                        return DateTime.TryParse(changedDate, out parsedDate);
                    }
                }
                return false;
            }
            catch
            {
                parsedDate = DateTime.MinValue;
                return false;
            }
        }

No comments:

Post a Comment