문제

미세한 정밀도를 사용하여 평등 (정확히 동일)을 결정하려면 두 개의 datetime 값을 비교해야합니다. 이것이 가장 좋은 방법일까요? 내 날짜는 초와 밀리 초를 가질 수 있지만 몇 분까지만 고려하고 싶습니다.

       where (Math.Abs(datetime1.Subtract(datetime2).TotalMinutes) == 0)
도움이 되었습니까?

해결책

확인 Math.Abs(diff.TotalMinutes) == 0 하지 않을 것입니다. 바로 그거죠 똑같다.

당신은 그들이 같은 분이 있는지 또는 1 분 미만의 분리 여부를 확인하려고합니까? 먼저 사용 :

where RoundToMinute(dateTime1) == RoundToMinute(dateTime2)

선언 한 :

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

두 번째로 사용 :

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

당신은 하나가 로컬이고 UTC에있는 경우 결과가 원하는 것을 고려해야합니다 ... 그런데 ...

LINQ에 따라 LINQ를 사용한다고 가정 할 때 여기에는 LINQ 관련이 없습니다. LINQ에서 SQL을 사용하는 경우 분명히 로컬 메소드를 사용할 수 없으며 다시 살펴 봐야합니다 ...

편집 : 나는 여전히 당신의 질문에 대해 매우 불분명합니다. 당신이 필요하다면 바로 그거죠 같은 날짜/시간은 쉽습니다 (가능한 지역 대 UTC 문제를 제외하고) :

where dateTime1 == dateTime2

그러나 질문 제목에서 "미세한 정밀도"를 언급하는 이유 또는 질문 본문에서 "최대 1 분의 정밀도 사용"에 대한 질문을 제기합니다.

다른 팁

어때

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

?

감사합니다 Allen, 그 일을 할 것입니다 (여전히 프로세스의 작동 방식을 정확하게 파악하십시오!). 처음에 내가 생각해 낸 답변을 나타내는 코드 스 니펫이 있습니다.

(math.abs (dateTime1.Subtract (dateTime2) .TotalMinutes) == 0)

배경 : LINQ Query의 위치 절 (따라서 1 라이너) 내에서 DateTime1과 DateTime2가 정확히 동일인지 확인해야합니다. 고려중인 DateTime 값은 쿼리에 사용 된 다른 값의 스탬프 날짜입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top