I've found I can read the time for sunrise and sunset for
any location on Earth on any day of the year to within a
minute of accuracy.

First we model the earth and give it a tilt of 23.44 degrees.
I've modeled the path of Minneapolis, Minnesota, shown in green.
The sunlight shadow line is modeled in orange.  This view
shows December 21:

Here it is shown in profile:

Let's eliminate the southern hemisphere from our CAD database:

Next, we view the path of Minneapolis from straight north of
the north pole.  The arc length of daylight for Minneapolis
can be readily obtained by noting the number of increments on
the earth model between the two points of intersection of the
Minneapolis path and the sunlight shadow line.  (The image can be 
zoomed in on at the end points of the arc for a highly accurate 
assessment of the end portions.)  Simple arithmetic converts 
that to a ratio of the 24 hour period.  Note that the nighttime
arc of December 21 is the equivalent of the daytime arc for June 21.

Here is the same view with the full database (full sphere):

Finally, one needs to add the appropriate time for the degree
width of the sun, as well as the extra daylight time due to
atmospheric refraction.  Oh yes, and the sidereal motion.

It's a trivial task to make this same model with the equatorial
bulge included, which increases the accuracy of the readings.