diff --git a/web/src/app/aktuelt/[slug]/page.tsx b/web/src/app/aktuelt/[slug]/page.tsx index c57521c..eacad15 100644 --- a/web/src/app/aktuelt/[slug]/page.tsx +++ b/web/src/app/aktuelt/[slug]/page.tsx @@ -3,7 +3,7 @@ import { Blocks } from "@/components/blocks/Blocks"; import Image from "@/components/general/Image"; import { graphql } from "@/gql"; import { NewsFragment } from "@/gql/graphql"; -import { commonDateFormat, formatDate } from "@/lib/date"; +import { compactDateFormat, formatDate } from "@/lib/date"; import { notFound } from "next/navigation"; export async function generateStaticParams() { @@ -67,7 +67,7 @@ export default async function Page({ params }: { params: { slug: string } }) { )} )} -

{formatDate(news.firstPublishedAt, commonDateFormat)}

+

{formatDate(news.firstPublishedAt, compactDateFormat)}

diff --git a/web/src/components/events/DateList.tsx b/web/src/components/events/DateList.tsx index a0dd332..00db7ae 100644 --- a/web/src/components/events/DateList.tsx +++ b/web/src/components/events/DateList.tsx @@ -1,7 +1,11 @@ "use client"; import { useState } from "react"; -import { formatDate, isTodayOrFuture } from "@/lib/date"; +import { + formatDate, + formatExtendedDateTime, + isTodayOrFuture, +} from "@/lib/date"; import { EventFragment, EventOccurrence, compareDates } from "@/lib/event"; import styles from "./dateList.module.scss"; import Link from "next/link"; @@ -14,7 +18,7 @@ const DateListItem = ({ occurrence }: { occurrence: EventOccurrence }) => {
  • - {formatDate(occurrence.start, dateFormat)} + {formatExtendedDateTime(occurrence.start, true)} {formatDate(occurrence.start, timeFormat)} diff --git a/web/src/components/events/EventHeader.tsx b/web/src/components/events/EventHeader.tsx index b35af70..2c28260 100644 --- a/web/src/components/events/EventHeader.tsx +++ b/web/src/components/events/EventHeader.tsx @@ -1,7 +1,6 @@ -import { EventCategory, EventFragment } from "@/lib/event"; +import { EventFragment } from "@/lib/event"; import styles from "./eventHeader.module.scss"; import Image from "@/components/general/Image"; -import { Pig } from "../general/Pig"; import Link from "next/link"; import { OrganizerList } from "./OrganizerList"; diff --git a/web/src/components/events/EventItem.tsx b/web/src/components/events/EventItem.tsx index 026932e..acc3ba4 100644 --- a/web/src/components/events/EventItem.tsx +++ b/web/src/components/events/EventItem.tsx @@ -8,7 +8,7 @@ import { EventFragment, getClosestOccurrence, } from "@/lib/event"; -import { toLocalTime, formatDate, commonDateTimeFormat } from "@/lib/date"; +import { formatDate, formatExtendedDateTime } from "@/lib/date"; export const EventItem = ({ event, @@ -43,14 +43,12 @@ export const EventItem = ({
    {mode === "list" && nextOccurrence && (
    - {numOccurrences === 1 && - nextOccurrence?.start && - formatDate(nextOccurrence.start, commonDateTimeFormat)} + {numOccurrences === 1 && nextOccurrence?.start && ( + {formatExtendedDateTime(nextOccurrence.start)} + )} {numOccurrences > 1 && nextOccurrence?.start && ( <> - - {formatDate(nextOccurrence.start, commonDateTimeFormat)} - + {formatExtendedDateTime(nextOccurrence.start)}

    Flere datoer ({numOccurrences})

    @@ -62,7 +60,7 @@ export const EventItem = ({ "occurrence" in event && event.occurrence?.start && (

    - {formatDate(event.occurrence?.start, commonDateTimeFormat)} + {formatExtendedDateTime(nextOccurrence.start)}

    )} {mode === "calendar" && diff --git a/web/src/components/news/NewsItem.tsx b/web/src/components/news/NewsItem.tsx index e9cd50e..b7da9e7 100644 --- a/web/src/components/news/NewsItem.tsx +++ b/web/src/components/news/NewsItem.tsx @@ -1,7 +1,7 @@ import styles from "./newsItem.module.scss"; import Image from "../general/Image"; import { NewsFragment } from "@/lib/news"; -import { formatDate, commonDateFormat } from "@/lib/date"; +import { formatDate, compactDateFormat } from "@/lib/date"; import Link from "next/link"; export const NewsItem = ({ news }: { news: NewsFragment }) => { @@ -22,7 +22,7 @@ export const NewsItem = ({ news }: { news: NewsFragment }) => {

    - {formatDate(news.firstPublishedAt, commonDateFormat)} + {formatDate(news.firstPublishedAt, compactDateFormat)}

    {news.title}

    {news.excerpt}

    diff --git a/web/src/lib/date.ts b/web/src/lib/date.ts index dfecb57..507b6be 100644 --- a/web/src/lib/date.ts +++ b/web/src/lib/date.ts @@ -4,8 +4,8 @@ import { toZonedTime, format } from "date-fns-tz"; const timeZone = "Europe/Oslo"; -export const commonDateTimeFormat = "dd.MM.yyyy 'kl.' HH:mm"; -export const commonDateFormat = "dd.MM.yyyy"; +export const compactDateTimeFormat = "dd.MM.yyyy 'kl.' HH:mm"; +export const compactDateFormat = "dd.MM.yyyy"; export function toLocalTime(date: Date | string | number) { return toZonedTime(date, timeZone); @@ -24,6 +24,17 @@ export function formatYearMonth(yearMonth: string) { return formatDate(parsed, "MMMM yyyy"); } +export function formatExtendedDateTime(date: Date | string | number, dateOnly: boolean = false) { + // wide date with weekday and month name + // year included if not current year + const parsed = toLocalTime(date); + const timePart = dateOnly ? "" : " 'kl.' HH:mm"; + if (parsed.getFullYear === new Date().getFullYear) { + return formatDate(parsed, `EEEE d. MMMM${timePart}`); + } + return formatDate(parsed, `EEEE d. MMMM yyyy${timePart}`); +} + export function isTodayOrFuture( date: Date | string | number, timeZone = "UTC"