diff --git a/src/app/conf/2025/schedule/_components/schedule-list.tsx b/src/app/conf/2025/schedule/_components/schedule-list.tsx
index a19e15b86c..82727dc80e 100644
--- a/src/app/conf/2025/schedule/_components/schedule-list.tsx
+++ b/src/app/conf/2025/schedule/_components/schedule-list.tsx
@@ -223,6 +223,12 @@ export function ScheduleList({
blockEnd.getTime() === nextBlockStart?.getTime() &&
!isBreak
+ const endTimesDiffer = sessions.some(
+ session =>
+ new Date(session.event_end).getTime() !==
+ blockEnd.getTime(),
+ )
+
return (
- {formatBlockTime(sessionDate, blockEnd)}
+ {formatBlockTime(
+ sessionDate,
+ endTimesDiffer ? undefined : blockEnd,
+ )}
@@ -242,6 +251,7 @@ export function ScheduleList({
year={year}
eventsColors={eventsColors}
blockEnd={blockEnd}
+ durationVisible={endTimesDiffer}
/>
))}
diff --git a/src/app/conf/2025/schedule/_components/schedule-session-card.tsx b/src/app/conf/2025/schedule/_components/schedule-session-card.tsx
index 3df8cc3654..8e0872b1ac 100644
--- a/src/app/conf/2025/schedule/_components/schedule-session-card.tsx
+++ b/src/app/conf/2025/schedule/_components/schedule-session-card.tsx
@@ -19,6 +19,7 @@ import ClockIcon from "@/app/conf/_design-system/pixelarticons/clock.svg?svgr"
import { getEventTitle } from "../../utils"
import { CalendarIcon } from "@/app/conf/_design-system/pixelarticons/calendar-icon"
+import { formatBlockTime } from "./format-block-time"
function isString(x: unknown): x is string {
return Object.prototype.toString.call(x) === "[object String]"
@@ -29,11 +30,13 @@ export function ScheduleSessionCard({
year,
eventsColors,
blockEnd,
+ durationVisible,
}: {
session: ScheduleSession
year: `202${number}`
eventsColors: Record
blockEnd: Date
+ durationVisible: boolean
}) {
let eventType = session.event_type
@@ -139,17 +142,7 @@ export function ScheduleSessionCard({
{session.venue}
)}
- {blockTimeFraction < 1 && (
-
-
- {Math.round(
- (new Date(session.event_end).getTime() -
- new Date(session.event_start).getTime()) /
- (1000 * 60),
- )}{" "}
- min
-
- )}
+ {durationVisible && }
1000 * 60 * 60 * 3
+ ? formatBlockTime(session.event_start, new Date(session.event_end))
+ : `${Math.round(durationMs / (1000 * 60))} min`
+
+ return (
+
+
+ {formattedTime}
+
+ )
+}
+
function AddToCalendarLink({
eventTitle,
session,