programing

DateTime 유형에서 시간이 없는 날짜만 비교하는 방법은 무엇입니까?

showcode 2023. 5. 5. 10:00
반응형

DateTime 유형에서 시간이 없는 날짜만 비교하는 방법은 무엇입니까?

두 개를 비교할 수 있는 방법이 있습니까?DateTime변수를 지정할 수 있지만 시간 부분은 무시할 수 없습니다.

앱은 DB에 항목을 저장하고 게시된 날짜를 추가합니다.저는 정확한 시간을 지키고 싶지만 날짜 자체는 맞출 수 있습니다.

비교하고 싶습니다.12/3/89 12:43:34그리고.12/3/89 11:22:12하루의 실제 시간을 무시하도록 하여 둘 다 동일한 것으로 간주하도록 합니다.

하루의 모든 시간을 설정할 수 있을 것 같습니다.00:00:00비교하기 전에 날짜로만 비교할 수 있는 시간을 알고 싶습니다.

동일한 문제가 있는 코드를 찾았는데, 년, 월, 일을 따로 비교합니다.이것을 하는 더 좋은 방법이 있습니까?

를 사용해 보십시오.Date의 재산.DateTime개체...

if(dtOne.Date == dtTwo.Date)
    ....

정확한 비교를 위해 다음을 사용할 수 있습니다.

dateTime1.Date.CompareTo(dateTime2.Date);

LINQ와 함께 작업하기 위해서는 이렇게 해야 합니다.

DateTime date_time_to_compare = DateTime.Now;
//Compare only date parts
context.YourObject.FirstOrDefault(r =>
                EntityFunctions.TruncateTime(r.date) == EntityFunctions.TruncateTime(date_to_compare));

사용하는 경우에만dtOne.Date == dtTwo.DateLINQ에서 작동하지 않습니다(오류:지정한 형식 멤버 '날짜'는 엔티티에 대한 LINQ에서 지원되지 않습니다.)

Entity Framework < v6.0을 사용하는 경우 다음을 사용합니다.EntityFunctions.TruncateTimeEntity Framework >= v6.0을 사용하는 경우 다음을 사용합니다.DbFunctions.TruncateTime

EF 버전에 따라 다음 중 하나를 사용합니다.DateTimeLinkq 쿼리 내에서 사용할 클래스 속성

var list = db.Cars.Where(c=> DbFunctions.TruncateTime(c.CreatedDate) 
                                       >= DbFunctions.TruncateTime(DateTime.UtcNow));
DateTime dt1 = DateTime.Now.Date;
DateTime dt2 = Convert.ToDateTime(TextBox4.Text.Trim()).Date;
if (dt1 >= dt2)
{
    MessageBox.Show("Valid Date");
}
else
{
    MessageBox.Show("Invalid Date... Please Give Correct Date....");
}
DateTime? NextChoiceDate = new DateTime();
DateTIme? NextSwitchDate = new DateTime();
if(NextChoiceDate.Value.Date == NextSwitchDate.Value.Date)
{
Console.WriteLine("Equal");
}

Null 가능한 날짜 필드를 사용하는 경우 이 필드를 사용할 수 있습니다.

DateTime dt1=DateTime.ParseExact(date1,"dd-MM-yyyy",null);
DateTime dt2=DateTime.ParseExact(date2,"dd-MM-yyyy",null);

int cmp=dt1.CompareTo(dt2);

   if(cmp>0) {
       // date1 is greater means date1 is comes after date2
   } else if(cmp<0) {
       // date2 is greater means date1 is comes after date1
   } else {
       // date1 is same as date2
   }
DateTime econvertedDate = Convert.ToDateTime(end_date);
DateTime sconvertedDate = Convert.ToDateTime(start_date);

TimeSpan age = econvertedDate.Subtract(sconvertedDate);
Int32 diff = Convert.ToInt32(age.TotalDays);

diff 값은 해당 기간의 일 수를 나타냅니다.값이 음수인 경우 시작 날짜는 종료 날짜 이후입니다.이것은 좋은 수표입니다.

시도해 보세요

if(dtOne.Year == dtTwo.Year && dtOne.Month == dtTwo.Month && dtOne.Day == dtTwo.Day)
  ....

.NET 5에서:

시간이 없는 날짜를 비교하려면 사용해야 합니다.EF.Functions.DateDiffDay()그렇지 않으면 코드에서 비교하게 되며, 이는 DB에서 필요한 것보다 훨씬 더 많은 데이터를 가져올 수 있음을 의미합니다.

.Where(x => EF.Functions.DateDiffDay(x.ReceiptDate, value) == 0);

조인 또는 where 절에서 다음을 사용합니다.Date열의 속성입니다.배후에서, 이것은 실행됩니다.CONVERT(DATE, <expression>)작동.이렇게 하면 시간이 없는 날짜를 비교할 수 있습니다.

        int o1 = date1.IndexOf("-");
        int o2 = date1.IndexOf("-",o1 + 1);
        string str11 = date1.Substring(0,o1);
        string str12 = date1.Substring(o1 + 1, o2 - o1 - 1);
        string str13 = date1.Substring(o2 + 1);

        int o21 = date2.IndexOf("-");
        int o22 = date2.IndexOf("-", o1 + 1);
        string str21 = date2.Substring(0, o1);
        string str22 = date2.Substring(o1 + 1, o2 - o1 - 1);
        string str23 = date2.Substring(o2 + 1);

        if (Convert.ToInt32(str11) > Convert.ToInt32(str21))
        {
        }
        else if (Convert.ToInt32(str12) > Convert.ToInt32(str22))
        {
        }
        else if (Convert.ToInt32(str12) == Convert.ToInt32(str22) && Convert.ToInt32(str13) > Convert.ToInt32(str23))
        {
        }

언급URL : https://stackoverflow.com/questions/683037/how-to-compare-only-date-without-time-in-datetime-types

반응형