Home > Enterprise >  How to find given Event datetime is past event or Future event while considering hours aslo
How to find given Event datetime is past event or Future event while considering hours aslo

Time:01-20

I have Events page, In that displaying past present and future events counts and list. Here I'm facing a issue form QA team.

Example:

**Event date** is      : 2022-01-20 08:00:00.000 
**Current datetime** is: 2022-01-20 10:00:00.000

now based on above dates , we need to display event as past event because of two hours less than the Current datetime

if (planEvents.Count > 0)
{
    switch (statusID)
    {
        case (int)GenericEnum.EventStatus.TodaysEvents:
        events = planEvents.Where(o => o.EventDate.Date == DateTime.Today.Date).Skip(startIndex - 1).Take(pageSize).ToList();
        totalCount = planEvents.Where(o => o.EventDate.Date == DateTime.Today.Date).ToList().Count();
        break;
    }
}

I tried above code but it's only returning date matching records but not hours comparison. can any once please help me.

CodePudding user response:

First off, you should probably use UTC for all times, but that's a different issue. I don't really understand the use case you're after, but you can use the current time and add or subtract time units to create a range start and end. Not tested, but you should have something like this to select from a date range:

var start = DateTime.Now.AddHours(-2); // start from 2 hours ago
var end = DateTime.Now.AddHours(2); // end 2 hours from now
events = planEvents.Where(x => x.EventDate > start && x.EventDate < end);

CodePudding user response:

Considering present events are the one falls within the current hour. Not tested, but it should work

if (planEvents.Any()) //Use Any method to improve performance
{
    switch (statusID)
    {
        case (int)GenericEnum.EventStatus.TodaysEvents:
            var todaysEvents = planEvents.Where(o => o.EventDate.Date == DateTime.Today.Date);
            var todaysTotalEvents = todaysEvents.Count();
            var currentHour = DateTime.Now.Hour;
            var pastEvents = todaysEvents.Where(e=> e.EventDate.Hour < currentHour);
            var presentEvents = todaysEvents.Where(e=> e.EventDate.Hour == currentHour);
            var futureEvents = todaysEvents.Where(e=> e.EventDate.Hour > currentHour);

            break;
    }
}
  •  Tags:  
  • Related