Um problema recorrente no desenvolvimento é a utilização do CompareTo para DateTime.
Apesar de ser uma solução ótima, melhor do que a comparação simples (=, >, <), há sempre uma pequena confusão com o resultado da operação.
Os valores possíveis são 1, 0 ou -1. Mas, afinal, qual deles vem em que situação?
Veja a tabela abaixo e acabe com as dúvidas de uma vez por todas:
| Valor | Descrição |
|---|---|
| < Zero | A instância é menor do que a data do parâmetro |
| Zero | A instância é igual à data do parâmetro |
| > Zero | A instância é maior do que a data do parâmetro |
Exemplo:
if (data.CompareTo(new DateTime(2009, 11, 17)) > 0)
{
// "data" é maior do que o dia de hoje
}
Resumindo, se a “data”, que está na esquerda, for maior, o resultado do if é true.
Ou seja, se você fizer um data.CompareTo(outraData), caso o resultado retorne 1, é porque “data” é maior do que “outraData” (veja que “data” está à esqueda, equivale ao “> 0″). Caso retorne 0, elas são iguais. Caso retorne -1, “outraData” é maior do que “data” (repare que “outraData” está à direita, equivale ao “< 0″).
| Maior | Igual | Menor |
|---|---|---|
| 1 | 0 | -1 |
Espero ter ajudado.
Amplexos!

