diff --git a/apps/events/templates/events/includes/time_tag.html b/apps/events/templates/events/includes/time_tag.html
index 90bc4491b..cfeeb9f7a 100644
--- a/apps/events/templates/events/includes/time_tag.html
+++ b/apps/events/templates/events/includes/time_tag.html
@@ -4,10 +4,6 @@
{{ next_time.dt_start|date:"Y" }}
-
- {{ next_time.dt_start|date:"Y" }}
-
-
{% if not next_time.all_day %}
{{ next_time.dt_start|date:"fA"|lower }} {{ next_time.dt_start|date:"e" }}
{% if next_time.valid_dt_end %} – {{ next_time.dt_end|date:"fA"|lower }}
diff --git a/apps/events/tests/test_templates.py b/apps/events/tests/test_templates.py
new file mode 100644
index 000000000..e278e3333
--- /dev/null
+++ b/apps/events/tests/test_templates.py
@@ -0,0 +1,62 @@
+import datetime
+import re
+
+from django.template.loader import render_to_string
+from django.test import TestCase
+from django.utils import timezone
+
+from apps.events.models import Calendar, Event
+
+
+class TimeTagTemplateTests(TestCase):
+ def test_single_day_event_year_rendering(self):
+ """
+ Verify that a single-day event does not render the year twice (Issue #2626).
+ """
+ future_year = timezone.now().date().year + 1
+
+ calendar = Calendar.objects.create(
+ name="Test Calendar",
+ slug="test-calendar-time-tag-single-day-event",
+ )
+ event = Event.objects.create(
+ title="Single Day Future Event",
+ description="Test event",
+ calendar=calendar,
+ )
+
+ # Use timezone-aware datetimes to match the project's USE_TZ = True setting.
+ class MockTime:
+ def __init__(self):
+ self.dt_start = datetime.datetime(
+ future_year, 5, 25, 12, 0, tzinfo=datetime.UTC
+ )
+ self.dt_end = datetime.datetime(
+ future_year, 5, 25, 14, 0, tzinfo=datetime.UTC
+ )
+ self.single_day = True
+ self.all_day = False
+ self.valid_dt_end = True
+
+ context = {
+ "next_time": MockTime(),
+ "scheduled_start_this_year": False,
+ "scheduled_end_this_year": False,
+ "object": event,
+ }
+
+ rendered = render_to_string("events/includes/time_tag.html", context)
+
+ # Count visible year occurrences inside tags using a regex.
+ # This avoids brittle exact-whitespace matching and ignores the
+ # year inside the