using System.Globalization;
public static void Main() {
string[] dateStrings = { "20161205", "12052016", "111312", "00012333", "06152014", "NotADate" };
Console.WriteLine("Hello World. What will we hallucinate about today?");
foreach (string dateString in dateStrings) {
Console.WriteLine(getYear(dateString, ismonth));
private static string getYear(string dateStr, bool hasMonth) {
string strYear = String.Empty;
if (DateTime.TryParseExact(dateStr, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateVal)) {
if (isValidYear(dateVal.Year)) strYear = String.Format("{0:d}{1}", dateVal.Year, hasMonth ? dateVal.Month.ToString("00") : "");
} else if (DateTime.TryParseExact(dateStr, "MMddyyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateVal)) {
if (isValidYear(dateVal.Year)) strYear = String.Format("{0:d}{1}", dateVal.Year, hasMonth ? dateVal.Month.ToString("00") : "");
} else if (DateTime.TryParseExact(dateStr, "MMddyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateVal)) {
if (isValidYear(dateVal.Year)) strYear = String.Format("{0:d}{1}", dateVal.Year, hasMonth ? dateVal.Month.ToString("00") : "");
} else if (DateTime.TryParseExact(dateStr, "yyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateVal)) {
if (isValidYear(dateVal.Year)) strYear = String.Format("{0:d}{1}", dateVal.Year, hasMonth ? dateVal.Month.ToString("00") : "");
Console.WriteLine(String.Format("Unable to Convert '{0}' to a valid date.", dateStr));
return String.Format("{2} = {0}{1}",strYear,"",dateStr);
private static bool isValidYear(int year) { return (year > 2007 && year < 2023); }