Sunrise and sunset time¶
Approximated calculation of sunrise and sunset time. Adapted from https://github.com/SatAgro/suntime.
Class methods¶
class Sun
¶
Sun(latitude, longitude)
Arguments latitude
and longitude
are floats representing the coordinates of a place on Earth.
method get_sunrise_time
¶
get_sunrise_time(year, month, day)
Calculate the sunrise time for the given date. It returns a tuple of integers (hour, minute)
in UTC time or None
if sun doesn't raise on that location at the given date.
method get_sunset_time
¶
get_sunset_time(year, month, day)
Calculate the sunset time for the given date. It returns a tuple of integers (hour, minute)
in UTC time or None
if sun doesn't set on that location at the given date.
Examples of usage¶
This example calculates sunrise and sunset of three major cities::
import suntime
test('suntime: example')
Rome = suntime.Sun( 41.902782 , 12.496366 )
Warsaw = suntime.Sun( 51.21 , 21.01 )
CapeTown = suntime.Sun(-33.9252192, 18.4240762)
dt1 = (2000, 1, 1)
sr1 = Rome.get_sunrise_time(*dt1) # (6, 38)
ss1 = Rome.get_sunset_time (*dt1) # (15, 49)
print('Rome:', sr1, ss1)
dt2 = (2014, 10, 3)
sr2 = Warsaw.get_sunrise_time(*dt2) # (4, 39)
ss2 = Warsaw.get_sunset_time (*dt2) # (16, 10)
print('Warsaw:', sr2, ss2)
dt3 = (2016, 12, 21)
sr3 = CapeTown.get_sunrise_time(*dt3) # (3, 32)
ss3 = CapeTown.get_sunset_time (*dt3) # (17, 57)
print('Cape Town:', sr3, ss3)
If datetime
module is available, results above can be expressed in local time::
import datetime as datetimelib
timedelta = datetimelib.timedelta
timezone = datetimelib.timezone
datetime = datetimelib.datetime
utc = timezone.utc
tz1 = timezone(timedelta(hours=1))
tz2 = timezone(timedelta(hours=3))
tz3 = timezone(timedelta(hours=2))
# https://www.timeanddate.com/sun/italy/rome?month=1&year=2000
print('Rome:')
rt1 = datetime(*dt1, *sr1, tzinfo=utc).astimezone(tz1) # 2000-01-01 07:38:00+01:00
st1 = datetime(*dt1, *ss1, tzinfo=utc).astimezone(tz1) # 2000-01-01 16:49:00+01:00
print('>', rt1)
print('>', st1)
# https://www.timeanddate.com/sun/poland/warsaw?month=10&year=2014
print('Warsaw:')
rt2 = datetime(*dt2, *sr2, tzinfo=utc).astimezone(tz2) # 2014-10-03 07:39:00+03:00
st2 = datetime(*dt2, *ss2, tzinfo=utc).astimezone(tz2) # 2014-10-03 19:10:00+03:00
print('>', rt2)
print('>', st2)
# https://www.timeanddate.com/sun/south-africa/cape-town?month=12&year=2016
print('Cape Town:')
rt3 = datetime(*dt3, *sr3, tzinfo=utc).astimezone(tz3) # 2016-12-21 05:32:00+02:00
st3 = datetime(*dt3, *ss3, tzinfo=utc).astimezone(tz3) # 2016-12-21 19:57:00+02:00
print('>', rt3)
print('>', st3)