Skip to content

Instantly share code, notes, and snippets.

@mraarif
Created May 7, 2018 14:25
Show Gist options
  • Save mraarif/e31cd8fb44d5103beeee3229c26150c5 to your computer and use it in GitHub Desktop.
Save mraarif/e31cd8fb44d5103beeee3229c26150c5 to your computer and use it in GitHub Desktop.
Check DateTime in C#, if it's happening now or in one minute (ignoring miliseconds)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Utils
{
public static class DateTimeExtensions
{
public static bool IsInOneMinute(this DateTime eventTime)
{
var currnetDateTime = DateTime.UtcNow;
var margin = currnetDateTime.AddSeconds(62);
var range = GetRange(currnetDateTime, margin);
return range.Contains(eventTime, new EventDateTimeComparer());
}
private static List<DateTime> GetRange(DateTime start, DateTime end)
{
var startDateTime = DateTime.UtcNow;
var endDateTime = startDateTime.AddSeconds(62);
var dateTimes = new List<DateTime>();
for (var dateTime = startDateTime; dateTime < endDateTime; dateTime = dateTime.AddSeconds(1))
{
dateTimes.Add(dateTime);
}
return dateTimes;
}
}
public class EventDateTimeComparer : IEqualityComparer<DateTime>
{
public bool Equals(DateTime x, DateTime y)
{
if (x.Date != y.Date) return false;
if (x.Hour != y.Hour) return false;
if (x.Minute != y.Minute) return false;
if (x.Second != y.Second) return false;
return true;
}
public int GetHashCode(DateTime obj)
{
return obj.GetHashCode();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment