public static bool Equal(this DateTime now, DateTime then, DatePartFlags flags) { bool isEqual = false; if (flags == DatePartFlags.Ticks) { isEqual = (now == then); } else { DatePartFlags equalFlags = DatePartFlags.Ticks; equalFlags |= (FlagIsSet(flags, DatePartFlags.Year) && now.Year == then.Year) ? DatePartFlags.Year : 0; equalFlags |= (FlagIsSet(flags, DatePartFlags.Month) && now.Month == then.Month) ? DatePartFlags.Month : 0; equalFlags |= (FlagIsSet(flags, DatePartFlags.Day) && now.Day == then.Day) ? DatePartFlags.Day : 0; equalFlags |= (FlagIsSet(flags, DatePartFlags.Hour) && now.Hour == then.Hour) ? DatePartFlags.Hour : 0; equalFlags |= (FlagIsSet(flags, DatePartFlags.Minute) && now.Minute == then.Minute) ? DatePartFlags.Minute : 0; equalFlags |= (FlagIsSet(flags, DatePartFlags.Second) && now.Second == then.Second) ? DatePartFlags.Second : 0; equalFlags |= (FlagIsSet(flags, DatePartFlags.Millisecond) && now.Millisecond == then.Millisecond) ? DatePartFlags.Millisecond : 0; isEqual = (flags == equalFlags); } return(isEqual); }
////////////////////////////////////////////////////////////////////////////////// // DateTime methods private static bool FlagIsSet(DatePartFlags flags, DatePartFlags flag) { bool isSet = ((flags & flag) == flag); return(isSet); }