Pergunta

Eu preciso comparar dois valores de data e hora para determinar a igualdade (exatamente a mesma), utilizando minuto precision.Would esta seja a melhor maneira de fazê-lo? As minhas datas poderia ter segundos e milésimos de segundo, mas eu quero considerar apenas para baixo até minutos.

       where (Math.Abs(datetime1.Subtract(datetime2).TotalMinutes) == 0)
Foi útil?

Solução

verificar se Math.Abs(diff.TotalMinutes) == 0 não vai fazer isso, não. - Isso é verificar se eles são exatamente o mesmo

Você está tentando verificar se eles têm o mesmo minuto, ou se eles são menos de um minuto distante? Para o primeiro, use:

where RoundToMinute(dateTime1) == RoundToMinute(dateTime2)

tendo declarado:

public static DateTime RoundToMinute(DateTime time)
{
    return new DateTime(time.Year, time.Month, time.Day,
                        time.Hour, time.Minute, 0, time.Kind);
}

Para a segunda, use:

where Math.Abs((dateTime1 - dateTime2).TotalMinutes) < 1

Você deve considerar o que você quer que o resultado seja no caso em que um é local e está em UTC, pelo caminho ...

Note que não é específico LINQ-nada aqui - supondo que você está usando LINQ to Objects. Se você estiver usando LINQ to SQL, então, obviamente, você não pode usar métodos locais, e nós vamos ter de olhar de novo ...

EDIT: Eu ainda sou muito claro sobre sua pergunta. Se você precisa deles para ser exatamente a mesma data / hora, é fácil (deixando de lado a possível locais vs questão UTC):

where dateTime1 == dateTime2

No entanto, isso levanta a questão de por que você menciona "precisão minuciosa" no título pergunta ou "utilizando até uma precisão minuto" no corpo questão.

Outras dicas

Como cerca

where (Math.Floor(datetime1.Ticks / 600000000) == Math.Floor(datetime2.Ticks / 600000000))

?

Graças Allen, vai fazer isso (ainda descobrir exatamente como funciona o processo!) Aqui está o trecho de código que indica a resposta que eu tinha vindo acima com inicialmente:.

(Math.Abs ??(datetime1.Subtract (datetime2) .TotalMinutes) == 0)

Fundo: Dentro de minha consulta linq é cláusula WHERE (portanto, um one-liner), eu preciso verificar se datetime1 e datetime2 são exatamente os mesmos. Os valores de data e hora em consideração são datas selo para outros valores usados ??na consulta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top