Search code examples
c#arraysstringdatetimeformatexception

How to convert char array into string for DateTime.Parse?


I am using this in my controller:

char[] arrDate = date.ToArray();
DateTime dt = DateTime.Parse(arrDate[0] + arrDate[1] + "/" +
                             arrDate[2] + arrDate[3] + "/" +
                             arrDate[4] + arrDate[5] + arrDate[6] + arrDate[7]);

The error:

System.FormatException: String was not recognized as a valid DateTime.


Solution

  • Consider this:

    var date = "11252017";
    var arrDate = date.ToArray();
    var strDate = arrDate[0] + arrDate[1] + "/" +
                  arrDate[2] + arrDate[3] + "/" +
                  arrDate[4] + arrDate[5] + arrDate[6] + arrDate[7]; // 98/25/2017
    

    Notice that:

    • '1' + '1' = 98* ⇒ char + char = int
    • 98 + "/" = "98/"int + string = string
    • "98/" + '2' = "98/2"string + char = string

    The fix:

    var dt = DateTime.Parse("" +
                            arrDate[0] + arrDate[1] + "/" +
                            arrDate[2] + arrDate[3] + "/" +
                            arrDate[4] + arrDate[5] + arrDate[6] + arrDate[7]);
    

    *ASCII representation:

    • '1' in decimal is 49