Instead of calling a comparison function as you do below, maybe you want to do something like

if (existingDisplayGroup.canContain(item))

Of course the definition of canContain() is complicated by the month grouping stuff from the spec.  (I'm not convinced that the spec is complete enough: I suspect there is ambiguity around when to split groups into separate groups and which group to add a new item to.  You may have to do some careful analysis here and then document your decisions about how the multi-month groups will work.)