Talk of +/- 20 ppm or +/- 2 ppm is well and good, but I was speaking from experience. The first DS1307 module that I bought was from SparkFun and it lost about 30 minutes in 3 months, in my house at reasonably constant temperature. That is very much in line with the experience reported by the OP. Perhaps SparkFun buys from less than reputable crystal manufacturers, but I didn't consider sending it back.
I had read that the watch crystals typically used in the DS1307 were sensitive to temperature swings, so I went ahead and bought the DS3231 module from JeeLabs. This module is currently being used as a timestamp source for a datalogger in a greenhouse, and it has lost about 5 minutes after four straight months of operation. That is OK for my purposes, and I acknowledge the caveat that temperature in the greenhouse ranges from 40 F to 95 F.
More recently I bought three DS3231 modules from dx.com for about $5 each, and I've experimented with two of them. On my workbench they seem to be more accurate than the JeeLabs module, but are still off by several seconds after a few days, compared to NTP time sources.