diff --git a/apps/www/src/lib/components/downloads/ClaimedCredits.svelte b/apps/www/src/lib/components/downloads/ClaimedCredits.svelte
index 8bce3460..6d89776a 100644
--- a/apps/www/src/lib/components/downloads/ClaimedCredits.svelte
+++ b/apps/www/src/lib/components/downloads/ClaimedCredits.svelte
@@ -3,18 +3,11 @@
import { Download } from '@lucide/svelte';
import Input from '../ui/Input.svelte';
import Button from '../ui/Button.svelte';
+ import { ISOStandard } from '$lib/date';
let startDate = $state('');
let loading = $state(false);
- let endDate = $state('');
-
- $effect(() => {
- if (!endDate) {
- const today = new Date();
- const formattedDate = today.toISOString().slice(0, 16);
- endDate = formattedDate;
- }
- });
+ let endDate = $derived(ISOStandard(new Date()));
diff --git a/apps/www/src/routes/portal/claim-beer/+page.server.ts b/apps/www/src/routes/portal/claim-beer/+page.server.ts
index f62431da..bec89920 100644
--- a/apps/www/src/routes/portal/claim-beer/+page.server.ts
+++ b/apps/www/src/routes/portal/claim-beer/+page.server.ts
@@ -4,6 +4,7 @@ import { fail } from '@sveltejs/kit';
import { getProducts } from '$lib/api/sanity/products';
import { claimedCredits, users } from '$lib/db/schemas';
import { gte, eq, desc, lte, and } from 'drizzle-orm';
+import { formatDate } from '$lib/date';
export const load: PageServerLoad = async ({ locals }) => {
const userId = await locals.user?.id;
@@ -177,20 +178,6 @@ export const actions: Actions = {
return `"${stringField}"`;
};
- const formatDate = (date: Date): string => {
- return date
- .toLocaleString('en-US', {
- year: 'numeric',
- month: '2-digit',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- hour12: false
- })
- .replace(/,/g, '');
- };
-
const headers = ['Product', 'Name', 'Cost', 'Created At'];
const csvRows = [headers.join(',')];
diff --git a/apps/www/src/routes/portal/claim-beer/+page.svelte b/apps/www/src/routes/portal/claim-beer/+page.svelte
index 09270ba2..a765f825 100644
--- a/apps/www/src/routes/portal/claim-beer/+page.svelte
+++ b/apps/www/src/routes/portal/claim-beer/+page.svelte
@@ -10,6 +10,7 @@
import { FilterState } from '$lib/states/filter-state.svelte';
import { urlFor } from '$lib/api/sanity/image';
import Button from '$lib/components/ui/Button.svelte';
+ import { normalDate } from '$lib/date';
let loading = $state(false);
let selectedProduct = $state
(null);
@@ -88,16 +89,6 @@
}
claimedProduct = null;
}
-
- function formatDate(date: Date) {
- return new Date(date).toLocaleString('no-NO', {
- day: '2-digit',
- month: '2-digit',
- year: 'numeric',
- hour: '2-digit',
- minute: '2-digit'
- });
- }
@@ -254,7 +245,7 @@
{#if data.lastClaimed}
- Historikk: {data.lastClaimed.productName} - {formatDate(data.lastClaimed.claimedAt)}
+ Historikk: {data.lastClaimed.productName} - {normalDate(data.lastClaimed.claimedAt)}
{/if}
{/if}
diff --git a/internal/emails/emails/shiftemail.tsx b/internal/emails/emails/shiftemail.tsx
index 1b39fa88..7b55157b 100644
--- a/internal/emails/emails/shiftemail.tsx
+++ b/internal/emails/emails/shiftemail.tsx
@@ -36,11 +36,13 @@ const ShiftEmail = ({ shift, user }: ShiftEmailProps) => {
- Fra: {new Date(shift.startAt).toLocaleString()}
+ Fra:{" "}
+ {new Date(shift.startAt).toLocaleString("nb-NO")}
- Til: {new Date(shift.endAt).toLocaleString()}
+ Til:{" "}
+ {new Date(shift.endAt).toLocaleString("nb-NO")}
{shift.description && (