Your result variable must be of nullable type (you can not assign null to DateTime). Use DateTime.TryParseExact(). If parsing fails, assign null, else assign the parsed value.
As DavidG noted, this is a hack, actually you should store dates as datetime or datetime2 SQL type!
using System.Globalization;
const string format = "yyyy-MM-dd hh:mm tt";
CultureInfo enUS = new CultureInfo("en-US");
string dateString = Eval("Date"); // e.g. "2017-11-13 02:16 PM"
DateTime? result; // final result or null stored here
DateTime parseResult;
if (DateTime.TryParseExact(dateString, format, enUS, DateTimeStyles.None, out parseResult)) {
result = parseResult;
}
else {
result = null;
}
// check for null before displaying
string display = result.HasValue ? result.Value.ToString(format) : "null";
.net Fiddle