The documented examples for the end_of() modifier has: >>> dt.end_of('year') '2012-01-31 23:59:59' >>> dt.end_of('decade') '2019-01-31 23:59:59' In both cases I'm pretty sure the results should be 12-31 and not 01-31.