GatherBy[{DateObject[{2015, 9}], DateObject[{2015, 1}],
DateObject[{2015, 5}], DateObject[{2017, 8}], DateObject[{2017, 5}],
DateObject[{2017, 8}], DateObject[{2018, 1}],
DateObject[{2018, 8}], DateObject[{2018, 3}], DateObject[{2018, 2}],
DateObject[{2018, 4}], DateObject[{2018, 9}],
DateObject[{2015, 6}], DateObject[{2015, 10}],
DateObject[{2015, 6}]}, "Year"]
and
GatherBy[{DateObject[{2015, 9}], DateObject[{2015, 1}],
DateObject[{2015, 5}], DateObject[{2017, 8}], DateObject[{2017, 5}],
DateObject[{2017, 8}], DateObject[{2018, 1}],
DateObject[{2018, 8}], DateObject[{2018, 3}], DateObject[{2018, 2}],
DateObject[{2018, 4}], DateObject[{2018, 9}],
DateObject[{2015, 6}], DateObject[{2015, 10}],
DateObject[{2015, 6}]}, DateValue[#, "Year"] &]
yield same result and exercise doesn't pass any