How does "Jun 23 2017 4:46PM" equate to "MM/dd/yyyy hh:mm:ss tt"? You are telling .net that the date looks like "06/23/2017 04:46:00 PM" yet you're giving it "Jun 23 2017 4:46PM" to parse. The format you give needs to match your date string
exactly, the clue is in the method name :)
var myDate = DateTime.ParseExact("Jun 23 2017 4:46PM", "MMM dd yyyy h:mmtt", CultureInfo.InvariantCulture);
Note I have catered for the double space between the year and the time, I don't know if that was a copy\paste error, if that space does not exist in reality then remove it from the format string also
var myDate = DateTime.ParseExact("Jun 23 2017 4:46PM", "MMM dd yyyy h:mmtt", CultureInfo.InvariantCulture);