dateAtStartOfMonth means 1st day of the month.
It is not 00:00 of 1st day, but hard to know intuitively.
We imagine following action about dateAtStartOfMonth.
NSDate *startOfMonth = [[date dateAtStartOfMonth] dateAtStartOfDay];
Therefore, I would be better off [[date dateAtStartOfMonth] dateAtStartOfDay] as dateAtStartOfMonth.