diff --git a/lib/util/date_extension.dart b/lib/util/date_extension.dart
index c7042b84524d9d921a1c0124b5abdda8a2652cb3..bf12ddbea21c87937a018937a100d1c5beec9200 100644
--- a/lib/util/date_extension.dart
+++ b/lib/util/date_extension.dart
@@ -24,6 +24,7 @@ extension DateExtension on DateTime {
   }
 
   DateTime atStartOfWeek() {
-    return subtract(Duration(days: weekday - 1));
+    final date = subtract(Duration(days: weekday - 1));
+    return DateTime(date.year, date.month, date.day);
   }
 }
diff --git a/test/start_of_week_test.dart b/test/start_of_week_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..745f47ba057393c7b6335490a32592dea3ba915a
--- /dev/null
+++ b/test/start_of_week_test.dart
@@ -0,0 +1,33 @@
+import 'package:better_untis/util/date_extension.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+void main() {
+  final startOfMonday = DateTime(2023, 3, 20, 0, 0);
+
+  test('Start of week at start of monday', () {
+    final startOfWeek = startOfMonday.atStartOfWeek();
+
+    expect(startOfWeek, startOfMonday);
+  });
+
+  test('Start of week at end of tuesday', () {
+    final endOfTuesday = DateTime(2023, 3, 21, 23, 59);
+    final startOfWeek = endOfTuesday.atStartOfWeek();
+
+    expect(startOfWeek, startOfMonday);
+  });
+
+  test('Start of week at end of sunday', () {
+    final endOfSaturday = DateTime(2023, 3, 26, 23, 59);
+    final startOfWeek = endOfSaturday.atStartOfWeek();
+
+    expect(startOfWeek, startOfMonday);
+  });
+
+  test('Start of week at end of next monday', () {
+    final startOfNextMonday = DateTime(2023, 3, 27, 0, 0);
+    final startOfWeek = startOfNextMonday.atStartOfWeek();
+
+    expect(startOfWeek, startOfNextMonday);
+  });
+}