Вы можете легко заменить значения перед преобразованием
static public DateTime todate(string t)
{
t = t.Replace("h", ":");
t = t.Replace("m", ":");
t = t.Replace("s", "");
return DateTime.Parse(t);
}
теперь используйте
string test = "2017-02-20 13h2m18s";
DateTime a = todate(test);