Two C# functions that may be useful in accepting date/time strings of various formats:
          /// <summary>
        /// Converts date string value, of various formats into DateTime object. 
        /// Example formats are DDMMYYYY,DD/MM/YYYY,MM/dd/YYYY,MMDDYYYY,... 
        /// </summary>
        /// <param name="dateValue">date string</param>
        /// <returns>resulting DateTime object</returns>
        public DateTime ConvertDateStringToDateTime(string dateValue) {
            string[] dateFormats = { "MM/yyyy",
                                     "M/d/yyyy", "M/dd/yyyy", "MM/dd/yyyy",
                                     "dd/MM/yyyy", "ddMMyyyy","dd/MM/yyyy","MMddyyyy", 
                                     "MM-dd-yyyy" };
            try {
                return DateTime.ParseExact(dateValue, dateFormats, CultureInfo.CurrentCulture, DateTimeStyles.None);
            } catch (FormatException fe) {
                throw new DataException(dateValue + ": " + fe.Message);
            }
        }
        /// <summary>
        /// Converts a time string of various formats into a DateTime object.
        /// Example formats are: 7:00,700AM, 7:00AM, 7:00A, 0700AM, 07:00 AM, ... 
        /// </summary>
        /// <param name="timeValue">time string</param>
        /// <returns>resulting DateTime object</returns>
        public DateTime ConvertTimeStringToDateTime(string timeValue) {
            string[] timeFormats = {"HHmm","Hmmtt", 
                                    "H:mm", "H:mmtt", "H:mmt", "HHmmtt", "HH:mm tt", "HH:mmtt","HH:mmt", "HHmmtt", "HHMMt"};
            // DateTime string cannot be blank, so if it is, assume "00:00"
            if (string.IsNullOrEmpty(timeValue)) timeValue = "00:00"; 
            try {
                return DateTime.ParseExact(timeValue.ToUpper(), timeFormats, CultureInfo.CurrentCulture, DateTimeStyles.None);
            } catch (FormatException fe) {
                throw new DataException(timeValue + ": " + fe.Message);
            }
        }