I don't see why that's an issue either... All those values have numerical representations that follow in increasing order for a point in time which comes after a previous. The solution to something like that is as trivial as figuring out how you would check between say 0 and 10.

For a smaller example, yet in which the logic still stays the same, think about how you would calculate between 3:30pm and 5:45pm.

Hours: 3 and 5 (compare these)

If they are equal, then check the next significant value, the minutes: 30 and 45.

If this were 5:45 and 5:30, then you know the hour is insignificant if it's already 5, otherwise, compare for being between 30 and 45.

The easy part is that once you have a DateTime object, it really doesn't matter what the previous format was. You can use the > and < operators to compare. (ie. You don't even need LINQ...)