/// <summary> /// Set the year part /// </summary> /// <param name="yearPart"></param> private void SetYearPart(string yearPart) { if (string.IsNullOrEmpty(yearPart)) { throw new ArgumentNullException(nameof(yearPart)); } var provider = new MilDateFormatProvider(); int year; if (yearPart.Length == 2) { // Adheres to current regional settings as defined in Control Panel (or group policy): // When a two-digit year is entered, interpret it as a year between 1970 and 2069. year = CultureInfo.CurrentCulture.Calendar.ToFourDigitYear(Convert.ToInt32(yearPart, provider)); } else if (yearPart.Length == 4) { year = Convert.ToInt32(yearPart, provider); } else { year = 0; } Year = year; }
/// <summary> /// Set the day, hour, minute, and second values to be used on DateTime. /// </summary> /// <param name="dayTimePart"></param> private void SetDayHourMinuteSecond(string dayTimePart) { if (string.IsNullOrEmpty(dayTimePart)) { throw new ArgumentNullException(nameof(dayTimePart)); } int day = 0, hour = 0, minute = 0, second = 0; var provider = new MilDateFormatProvider(); if (dayTimePart.Length % 2 == 0) { var parts = dayTimePart.SplitInParts(2); /* * There are day and time values */ var enumerable = parts.ToList(); if (enumerable.Count == 1) { day = Convert.ToInt32(enumerable.First(), provider); } else if (enumerable.Count == 2) { day = Convert.ToInt32(enumerable.First(), provider); hour = Convert.ToInt32(enumerable.Last(), provider); } else if (enumerable.Count == 3) { day = Convert.ToInt32(enumerable.First(), provider); hour = Convert.ToInt32(enumerable.ElementAt(1), provider); minute = Convert.ToInt32(enumerable.Last(), provider); } else if (enumerable.Count == 4) { day = Convert.ToInt32(enumerable.First(), provider); hour = Convert.ToInt32(enumerable.ElementAt(1), provider); minute = Convert.ToInt32(enumerable.ElementAt(2), provider); second = Convert.ToInt32(enumerable.Last(), provider); } } Day = day > 31 || day < 0 ? 0 : day; Hour = hour > 24 || hour < 0 ? 0 : hour; Minute = minute > 60 || minute < 0 ? 0 : minute; Second = second > 60 || second < 0 ? 0 : second; }