Partial DateTime Object Equality
If you use the logic from your FlagIsSet function, you can remove half of your tests: DatePartFlags equalFlags = DatePartFlags.Ticks; equalFlags |= (now.Year == then.Year) ? DatePartFlags.Year : 0; equalFlags |= (now.Month == then.Month) ? DatePartFlags.Month : 0; ...
If you use the logic from your
FlagIsSet
function, you can remove half of your tests:
DatePartFlags equalFlags = DatePartFlags.Ticks; equalFlags |= (now.Year == then.Year) ? DatePartFlags.Year : 0; equalFlags |= (now.Month == then.Month) ? DatePartFlags.Month : 0; equalFlags |= (now.Day == then.Day) ? DatePartFlags.Day : 0; equalFlags |= (now.Hour == then.Hour) ? DatePartFlags.Hour : 0; equalFlags |= (now.Minute == then.Minute) ? DatePartFlags.Minute : 0; equalFlags |= (now.Second == then.Second) ? DatePartFlags.Second : 0; equalFlags |= (now.Millisecond == then.Millisecond) ? DatePartFlags.Millisecond : 0; isEqual = (flags & equalFlags) == flags;