#!/usr/bin/python # -*- coding: utf-8 -*- import math import datetime import calendar from datetime import date pi = 3.1415926536 RAD = pi/180.0 h = -(50.0/60.0)*RAD Breite = 50.3037398 # Hasenberg 27 Laenge = 8.4995726 # auch B = Breite*RAD def setzone(): year = datetime.date.today().year heute = datetime.date.today() # heute = date(year,11,10) day3 = max(week[-1] for week in calendar.monthcalendar(year, 3)) dayszstart = date(year,3,day3) day10 = max(week[-1] for week in calendar.monthcalendar(year, 10)) dayszende = date(year,10,day10) if heute < dayszstart: Zone = 1 elif heute >= dayszstart and heute <= dayszende: Zone = 2 else: Zone = 1 return (Zone) def sonnendeklination(T): "Deklination der Sonne in Radians" return (0.409526325277017*math.sin(0.0169060504029192*(T-80.0856919827619))); def zeitdifferenz(Deklination): "Dauer des halben Tagbogens in Stunden: Zeit von Sonnenaufgang (Hoehe ) bis zum hoechsten Stand im Sueden" return (12.0*math.acos((math.sin(h) - math.sin(B)*math.sin(Deklination)) / (math.cos(B)*math.cos(Deklination)))/pi); def zeitgleichung(T): "Differenz zwischen wahrer und mittlerer Sonnenzeit" return (-0.170869921174742*math.sin(0.0336997028793971 * T + 0.465419984181394) - 0.129890681040717*math.sin(0.0178674832556871*T - 0.167936777524864)); def aufgang(T): DK = sonnendeklination(T) return (12 - zeitdifferenz(DK) - zeitgleichung(T)); def untergang(T): DK = sonnendeklination(T) return (12 + zeitdifferenz(DK) - zeitgleichung(T)); Zone = setzone() heute = datetime.datetime.now() T = float(heute.strftime('%j')) print "Tag im Jahr fĂr " + heute.strftime("%Y-%m-%d") + " ist: " + str(T) Aufgang = aufgang(T) Untergang = untergang(T) Aufgang = Aufgang - Laenge /15.0 + Zone Untergang = Untergang - Laenge /15.0 + Zone # print Aufgang min,std = math.modf(Aufgang) min = min * 60 print "Aufgang : " + "%02d:%02d" % (std,min) # print Untergang min,std = math.modf(Untergang) min = min * 60 print "Untergang : " + "%02d:%02d" % (std,min)