diff --git a/frontend/src/lib/types/message.ts b/frontend/src/lib/types/message.ts
index e083878c2f6e7b3f0fd736e3138c236764e822a7..6f518cb61950efb98f44a1fdcd32804f3da50a85 100644
--- a/frontend/src/lib/types/message.ts
+++ b/frontend/src/lib/types/message.ts
@@ -4,6 +4,8 @@ import { updateMessageAPI, createMessageFeedbackAPI } from '$lib/api/sessions';
 import { toastAlert } from '$lib/utils/toasts';
 import { get, writable, type Writable } from 'svelte/store';
 import Feedback from './feedback';
+import { parse } from 'svelte/compiler';
+import { parseToLocalDate } from '$lib/utils/date';
 
 export default class Message {
 	private _id: number;
@@ -140,7 +142,7 @@ export default class Message {
 			json.id,
 			json.message_id,
 			json.content,
-			new Date(json.created_at),
+			parseToLocalDate(json.created_at),
 			user,
 			session
 		);
diff --git a/frontend/src/lib/types/session.ts b/frontend/src/lib/types/session.ts
index ae52853b222805d673afd2ea8b50cac3fd37c3ee..19c2d1ec9062a6425df82c9d608e528e34d5b291 100644
--- a/frontend/src/lib/types/session.ts
+++ b/frontend/src/lib/types/session.ts
@@ -11,6 +11,7 @@ import {
 import Message from './message';
 import config from '$lib/config';
 import Feedback from './feedback';
+import { parseToLocalDate } from '$lib/utils/date';
 
 const { subscribe, set, update } = writable<Session[]>([]);
 
@@ -371,9 +372,9 @@ export default class Session {
 			json.token,
 			json.is_active,
 			[],
-			new Date(json.created_at),
-			new Date(json.start_time),
-			new Date(json.end_time),
+			parseToLocalDate(json.created_at),
+			parseToLocalDate(json.start_time),
+			parseToLocalDate(json.end_time),
 			json.language
 		);
 
diff --git a/frontend/src/lib/utils/date.ts b/frontend/src/lib/utils/date.ts
index dfdf53735dcf13981362ee0e000d6a1e3f6a313e..665f18c919f03397c6ebb3139079cd82eb8578e5 100644
--- a/frontend/src/lib/utils/date.ts
+++ b/frontend/src/lib/utils/date.ts
@@ -98,3 +98,29 @@ export function displayDuration(start: Date, end: Date): string | null {
 	if (hours === 0) return minutes + 'm';
 	else return hours + 'h ' + minutes + 'm';
 }
+
+export function parseToLocalDate(dateStr: string): Date {
+	const isDST = isInDST(new Date(dateStr + 'Z'));
+
+	const offset = isDST ? '+02:00' : '+01:00';
+
+	return new Date(dateStr + offset);
+}
+
+function isInDST(date: Date): boolean {
+	const year = date.getUTCFullYear();
+
+	// Calculate the last Sunday in March
+	const startOfDST = new Date(Date.UTC(year, 2, 31));
+	const startDay = startOfDST.getUTCDay();
+	const lastSundayMarch = 31 - startDay;
+	const startOfDSTDate = new Date(Date.UTC(year, 2, lastSundayMarch, 1));
+
+	// Calculate the last Sunday in October
+	const endOfDST = new Date(Date.UTC(year, 9, 31));
+	const endDay = endOfDST.getUTCDay();
+	const lastSundayOctober = 31 - endDay;
+	const endOfDSTDate = new Date(Date.UTC(year, 9, lastSundayOctober, 1));
+
+	return date >= startOfDSTDate && date < endOfDSTDate;
+}