Maneira simples de lidar com tempo em c #?

Minha abordagem atual é algo como

DateTime startHour = new DateTime(1900,1,1,12,25,43);
DateTime endHour = new DateTime(1900,1,1,13,45,32);

// I need to, say, know if a complete DateTime instance 
// is later than startHour plus 15 minutes

DateTime now = DateTime.Now();

startHour = startHour.addMinutes(15);

if (now.CompareTo(new DateTime(now.Year, now.Month, now.Day, startHour.Hour, 
                    startHour.Minute, startHour.Second)) > 0) 
{
    //I can do something now
}

Isso é muito complicado e até propenso a falhas. Os TimeSpans não são uma solução, até onde eu posso ver, porque eles representam spans e não estão limitados pelo limite de 24 horas (um TimeSpan de 56 horas e 34 minutos é válido).

Qual é a abordagem preferida para esse tipo de cálculo?

o que estou perdendo?

EDIT: Os cálculos que estou depois são maneiras de comparar uma instância DateTime completa com uma hora, minuto, segundo trio representando uma hora real do dia e uma maneira de operar sobre os trios (adicionar horas, minutos segundos).

EDIT 2: Obrigado a todos, eu tenho a essência da API DateTime agora, eu acho. :) A única coisa que eu sinto falta é um meio de especificar um TimeSpan que deve representar apenas um TimeOfDay, mas isso é menor.

questionAnswers(4)

yourAnswerToTheQuestion