How do you name a something as approximately equal?
About your current implementation, you write:


  The problem is that I think it is terrible.


But then, you don't explain why. 

Then you go ahead and write much longer code, and a long list of objections.

In other words, maybe your original implementation is not so bad after all :)

The original code checks if there is any event that happened within the same second (more or less) as the reference event in the parameter (+ an additional date filter). The alternative implementation changes this logic to ±500 millis, which is different. Regardless of the logic you choose, the first option has some important benefits:


Simple
Efficient: sets constant values before a loop, rather than recalculate in every iteration


So I suggest to stick with that. Also remember Occam's razor.