1. В timespan так же есть возможность настроить вывод в строку:
return delta.ToString(@"dd\ hh\:mm");
2. Пример простенький, чтобы понять куда двигаться (можно вместо if-ов свитч запилить):
DateTime dt1 = new DateTime(2020,12,22,22,00,00);
DateTime dt2 = new DateTime(2020,12,23,2,30,00)...