Me voy a dar la misma respuesta como Michael, pero expresadas de forma algo diferente: voy a trabajar en un sistema de coordenadas cuyo $xy$-plano es el plano de la órbita de la tierra, y cuyas $z$ -, el eje es perpendicular a este plano. El solsticio de verano se produce cuando el centro de la tierra tiene mayor $x$-coordinar, y el eje polar de la tierra es, por tanto, inclinada, de modo que en el solsticio de verano, es en la xz-plano, con el polo norte más cerca del sol, y el polo sur más lejos del sol.
Dejando $\theta = \dfrac{2\pi(\text{date} - \text{summerSolstice})}{365}$, tenemos la posición del centro de la tierra como
$$
C(\theta) = (R \cos \theta, 0, R \sin \theta)
$$
donde $R$ es el radio de la órbita de la tierra, que no se necesitaba más.
$$
\newcommand{\vv}{\mathbf v}
\newcommand{\uu}{\mathbf u}
\newcommand{\ww}{\mathbf u}
\newcommand{\ey}{\mathbf {e_2}}
$$
El vector a lo largo del eje de la tierra, desde la S a N, es
$$
\vv = (-\sin \alpha, 0, \cos \alpha),
$$
donde $\alpha = 23.56 \text{ degrees}$ es la inclinación del eje. (Usted puede hacer $\alpha$ en función del tiempo para incluir la nutación, etc., pero yo no voy a hacer eso). El vector perpendicular a esta, en la $xz$ plano, señalando, en su mayoría lejos del sol en el solsticio de verano, es
$$
\uu = (\cos \alpha, 0, \sin \alpha).
$$
Un tercer vector perpendicular a ambos de estos, es el $y$-eje, $\ey$. Un típico punto de $P$ sobre la tierra puede ser descrito por su desplazamiento desde el centro de la tierra, es decir, por
$$
\ww = P - C(\theta)
$$
Si la latitud de $P$, medido entre el $\pi/2$ en el polo sur a $\pi/2$ en el polo norte, es $\lambda$, entonces el vector de $\ww$ parece
$$
\ww = r\sin (\lambda) [ \sin(t) \ey + \cos(t) \uu] + r\cos (\lambda) \vv
$$
donde $t$ es la hora del día, medido a partir de $0$$2 \pi$, e $r \ll R$ es el radio de la tierra.
Salida del sol/puesta de sol se producen cuando el vector $\ww$ es ortogonal a los rayos desde el origen hasta el punto de $P$, es decir, cuando se $\ww$ es orthgonal a $\ww + C(\theta)$, es decir,
$$
\ww \cdot \ww + \ww \cdot C(\theta) = 0.
$$
En este punto, hay dos bastante razonable aproximaciones a ser hecho.
Pretender que el tiempo de $t$ y la fecha de $\theta$ son independientes. Reparamos $\theta$ en el ángulo de la mitad del día, sobre la base de que esto está cambiando muy lentamente.
El producto escalar de a $\ww$ con sí mismo es pequeño en comparación con el producto escalar de a$C(\theta)$$\ww$, ya que la magnitud de $C(\theta)$ es el radio de la órbita de la tierra, mientras que la magnitud de $\ww$ es el radio de la tierra, por lo que pretender que el $\uu \cdot \uu$ término que falta en la ecuación.
El primero de ellos (y tal vez el segundo) se utiliza en Michael Hardy solución. Como recuerdo de mi estudio de la navegación celeste, el impacto es bastante pequeña, aunque puede variar de día a día una vez que ya no asumir una órbita circular, por lo que no se puede ignorar si se desea la máxima precisión. El segundo introduce un error en el ángulo de no más de $r/R$, que es algo así como el $1/2000$ radián, aunque se trata de un grueso sobreestimar; que alrededor de 1,7 minutos de arco, que se convertiría en unos 6 minutos de tiempo.
En cualquier caso, uno puede escribir $t$ en términos de $\theta$: multiplicar el $\theta$ por 365; dividir por $2 \pi$, y, a continuación, tomar el resultado mod 1, y multiplicar por $2 \pi$ conseguir $t$.
Una vez que hayas hecho esto, la ecuación anterior implica únicamente la $\theta$, y se puede resolver para cuando es cero (aunque probablemente tenga que recurrir a la numérica; exacto trig no es probable que funcione muy bien).
La única diferencia real de este a partir de la solución anterior es que el tiempo y la fecha de conseguir relacionados, y el cálculo se realiza con productos de puntos en lugar de la geometría clásica.