diff --git a/program/models.py b/program/models.py
index c66c3963be68046c3f62e94ecf526ba2d473e1e1..a53169f7fa4f3874b9dc94a232d7155984103bf1 100644
--- a/program/models.py
+++ b/program/models.py
@@ -430,12 +430,12 @@ class Schedule(models.Model):
             byweekday_start = int(schedule.byweekday)
 
         if schedule.rrule.freq == 0:
-            starts.append(datetime.combine(schedule.dstart, schedule.tstart))
-            ends.append(datetime.combine(dend, schedule.tend))
+            starts.append(timezone.make_aware(datetime.combine(schedule.dstart, schedule.tstart)))
+            ends.append(timezone.make_aware(datetime.combine(dend, schedule.tend)))
         else:
 
             starts = list(rrule(freq=schedule.rrule.freq,
-                                dtstart=datetime.combine(schedule.dstart, schedule.tstart),
+                                dtstart=timezone.make_aware(datetime.combine(schedule.dstart, schedule.tstart)),
                                 interval=schedule.rrule.interval,
                                 until=schedule.until + relativedelta(days=+1),
                                 bysetpos=schedule.rrule.bysetpos,
@@ -443,7 +443,7 @@ class Schedule(models.Model):
                                 byweekno=byweekno))
 
             ends = list(rrule(freq=schedule.rrule.freq,
-                              dtstart=datetime.combine(dend, schedule.tend),
+                              dtstart=timezone.make_aware(datetime.combine(dend, schedule.tend)),
                               interval=schedule.rrule.interval,
                               until=schedule.until + relativedelta(days=+1),
                               bysetpos=schedule.rrule.bysetpos,
@@ -457,7 +457,7 @@ class Schedule(models.Model):
             #       produces wrong end dates if the 1st Tuesday is before the 1st Monday
             #       In this case we take the next day instead of rrule's calculated end
             if starts[k] > ends[k]:
-                ends[k] = datetime.combine(starts[k] + relativedelta(days=+1), schedule.tend)
+                ends[k] = timezone.make_aware(datetime.combine(starts[k] + relativedelta(days=+1), schedule.tend))
 
             '''
             Add a number of days to the generated dates?
diff --git a/program/views.py b/program/views.py
index 0226ad5ac0960dd1782ca21d13460c65c5d0a635..705209007c28f4dddf0f83845b3282572d1078c4 100644
--- a/program/views.py
+++ b/program/views.py
@@ -26,6 +26,7 @@ from django.contrib.auth.models import User
 from django.db.models import Q
 from django.http import HttpResponse
 from django.shortcuts import get_object_or_404
+from django.utils import timezone
 from django.utils.translation import gettext as _
 from rest_framework import permissions, status, viewsets
 from rest_framework.pagination import LimitOffsetPagination
@@ -41,9 +42,9 @@ logger = logging.getLogger(__name__)
 
 def json_day_schedule(request, year=None, month=None, day=None):
     if year is None and month is None and day is None:
-        today = datetime.combine(date.today(), time(0, 0))
+        today = timezone.make_aware(datetime.combine(date.today(), time(0, 0)))
     else:
-        today = datetime.strptime('%s__%s__%s__00__00' % (year, month, day), '%Y__%m__%d__%H__%M')
+        today = timezone.make_aware(datetime.strptime('%s__%s__%s__00__00' % (year, month, day), '%Y__%m__%d__%H__%M'))
 
     timeslots = TimeSlot.objects.get_24h_timeslots(today).select_related('schedule').select_related('show')
     schedule = []
@@ -74,16 +75,16 @@ def json_playout(request):
     """
 
     if request.GET.get('start') is None:
-        start = datetime.combine(date.today(), time(0, 0))
+        start = timezone.make_aware(datetime.combine(date.today(), time(0, 0)))
     else:
-        start = datetime.combine(datetime.strptime(request.GET.get('start'), '%Y-%m-%d').date(), time(0, 0))
+        start = timezone.make_aware(datetime.combine(datetime.strptime(request.GET.get('start'), '%Y-%m-%d').date(), time(0, 0)))
 
     if request.GET.get('end') is None:
         # If no end was given, return the next week
         timeslots = TimeSlot.objects.get_7d_timeslots(start).select_related('schedule').select_related('show')
     else:
         # Otherwise return the given timerange
-        end = datetime.combine(datetime.strptime(request.GET.get('end'), '%Y-%m-%d').date(), time(23, 59))
+        end = timezone.make_aware(datetime.combine(datetime.strptime(request.GET.get('end'), '%Y-%m-%d').date(), time(23, 59)))
         timeslots = TimeSlot.objects.get_timerange_timeslots(start, end).select_related('schedule').select_related('show')
 
     schedule = []
@@ -538,12 +539,12 @@ class APITimeSlotViewSet(viewsets.ModelViewSet):
         # Filters
 
         # Return next 60 days by default
-        start = datetime.combine(date.today(), time(0, 0))
+        start = timezone.make_aware(datetime.combine(date.today(), time(0, 0)))
         end = start + timedelta(days=60)
 
         if ('start' in self.request.query_params) and ('end' in self.request.query_params):
-            start = datetime.combine(datetime.strptime(self.request.query_params.get('start'), '%Y-%m-%d').date(), time(0, 0))
-            end = datetime.combine(datetime.strptime(self.request.query_params.get('end'), '%Y-%m-%d').date(), time(23, 59))
+            start = timezone.make_aware(datetime.combine(datetime.strptime(self.request.query_params.get('start'), '%Y-%m-%d').date(), time(0, 0)))
+            end = timezone.make_aware(datetime.combine(datetime.strptime(self.request.query_params.get('end'), '%Y-%m-%d').date(), time(23, 59)))
 
         default_order = '-start'
         order = self.request.query_params.get('order', default_order)
@@ -556,7 +557,7 @@ class APITimeSlotViewSet(viewsets.ModelViewSet):
 
 
         if 'surrounding' in self.request.query_params:
-            today = datetime.today()
+            today = timezone.make_aware(datetime.today())
 
             nearest_timeslots_in_future = TimeSlot.objects.filter(start__gte=today).order_by('start').values_list('id', flat=True)[:5]
             nearest_timeslots_in_past = TimeSlot.objects.filter(start__lt=today).order_by('-start').values_list('id', flat=True)[:5]