diff --git a/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue b/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
index a6ae5cfa7fa958b6177889d570eeb01382342090..3bdd8ab8daa347c1c6156593a58690a2a71eb1d5 100644
--- a/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
+++ b/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
@@ -237,8 +237,8 @@ export default {
       return {
         ...item,
         amends: this.selectedEvent.meta.id,
-        datetimeStart: this.selectedEvent.startDateTime.toISO(),
-        datetimeEnd: this.selectedEvent.endDateTime.toISO(),
+        datetimeStart: this.selectedEvent.startDateTime.toUTC().toISO(),
+        datetimeEnd: this.selectedEvent.endDateTime.toUTC().toISO(),
       };
     },
     transformPatchData(item) {
diff --git a/aleksis/apps/chronos/schema/__init__.py b/aleksis/apps/chronos/schema/__init__.py
index 86c32376280fa4f6193375282d3727b2226ab0a4..bdfe3ded908f1001f0ec13843ea3d2484e642476 100644
--- a/aleksis/apps/chronos/schema/__init__.py
+++ b/aleksis/apps/chronos/schema/__init__.py
@@ -57,7 +57,31 @@ class LessonEventType(DjangoObjectType):
         )
 
 
-class AmendLessonCreateMutation(DjangoCreateMutation):
+class DatetimeTimezoneMixin:
+    """Handle datetimes for mutations with CalendarEvent objects.
+
+    Since the client sends timezone information as ISO string
+    which only includes an offset (+00:00 UTC). Because an offset
+    is no valid timezone, we set UTC as timezone directly.
+    """
+
+    @classmethod
+    def handle_datetime_start(cls, value, name, info) -> int:
+        value = value.replace(tzinfo=timezone.utc)
+        return value
+
+    @classmethod
+    def handle_datetime_end(cls, value, name, info) -> int:
+        value = value.replace(tzinfo=timezone.utc)
+        return value
+
+    @classmethod
+    def before_save(cls, root, info, input, obj):
+        obj.timezone = obj.amends.timezone
+        return obj
+
+
+class AmendLessonCreateMutation(DatetimeTimezoneMixin, DjangoCreateMutation):
     class Meta:
         model = LessonEvent
         permissions = ("chronos.edit_substitution_rule",)
@@ -74,14 +98,13 @@ class AmendLessonCreateMutation(DjangoCreateMutation):
         )
 
 
-class AmendLessonPatchMutation(DjangoPatchMutation):
+class AmendLessonPatchMutation(DatetimeTimezoneMixin, DjangoPatchMutation):
     class Meta:
         model = LessonEvent
         permissions = ("chronos.edit_substitution_rule",)
         only_fields = ("subject", "teachers", "groups", "rooms", "cancelled", "comment")
 
 
-
 class TimetableType(graphene.Enum):
     TEACHER = "teacher"
     GROUP = "group"