Skip to content

Commit aa465fd

Browse files
authored
fix(fe): apply a seoul time zone at date formatting (#1569)
* feat: add locale * fix: change logic * fix: apply new function
1 parent d8e2375 commit aa465fd

13 files changed

Lines changed: 37 additions & 35 deletions

File tree

apps/frontend/app/(main)/_components/ContestCard.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
2-
import { cn } from '@/lib/utils'
2+
import { cn, dateFormatter } from '@/lib/utils'
33
import type { Contest } from '@/types/type'
4-
import dayjs from 'dayjs'
54
import { FaRegClock } from 'react-icons/fa'
65
import { FaRegCalendarAlt } from 'react-icons/fa'
76
import Badge from './Badge'
@@ -21,8 +20,8 @@ interface Props {
2120

2221
const format = (target: Date, year: number): string =>
2322
new Date(target).getFullYear() === year
24-
? dayjs(target).format('MMM DD')
25-
: dayjs(target).format('MMM DD, YYYY')
23+
? dateFormatter(target, 'MMM DD')
24+
: dateFormatter(target, 'MMM DD, YYYY')
2625

2726
export default function ContestCard({ contest }: Props) {
2827
const year = new Date().getFullYear()

apps/frontend/app/(main)/contest/[contestId]/@tabs/announcement/_components/Columns.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
'use client'
22

3-
import { convertToLetter } from '@/lib/utils'
3+
import { convertToLetter, dateFormatter } from '@/lib/utils'
44
import type { ContestAnnouncement } from '@/types/type'
55
import type { ColumnDef } from '@tanstack/react-table'
6-
import dayjs from 'dayjs'
76
import './styles.css'
87

98
export const columns: ColumnDef<ContestAnnouncement>[] = [
@@ -28,6 +27,7 @@ export const columns: ColumnDef<ContestAnnouncement>[] = [
2827
{
2928
header: () => 'Posted',
3029
accessorKey: 'updateTime',
31-
cell: ({ row }) => dayjs(row.original.updateTime).format('YYYY-MM-DD HH:mm')
30+
cell: ({ row }) =>
31+
dateFormatter(row.original.updateTime, 'YYYY-MM-DD HH:mm')
3232
}
3333
]

apps/frontend/app/(main)/contest/[contestId]/layout.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { fetcher } from '@/lib/utils'
1+
import { fetcher, dateFormatter } from '@/lib/utils'
22
import type { Contest } from '@/types/type'
3-
import dayjs from 'dayjs'
43
import { FaRegClock } from 'react-icons/fa'
54
import { FaRegCalendarAlt } from 'react-icons/fa'
65
import TimeDiff from '../../_components/TimeDiff'
@@ -14,8 +13,8 @@ interface ContestDetailProps {
1413

1514
const format = (target: Date, year: number): string =>
1615
new Date(target).getFullYear() === year
17-
? dayjs(target).format('MMM DD')
18-
: dayjs(target).format('MMM DD, YYYY')
16+
? dateFormatter(target, 'MMM DD')
17+
: dateFormatter(target, 'MMM DD,YYYY')
1918

2019
export default async function Layout({
2120
params,

apps/frontend/app/(main)/contest/[contestId]/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { baseUrl } from '@/lib/constants'
2-
import dayjs from 'dayjs'
2+
import { dateFormatter } from '@/lib/utils'
33
import { sanitize } from 'isomorphic-dompurify'
44

55
interface ContestDetailProps {
@@ -18,9 +18,9 @@ export default async function ContestDetail({ params }: ContestDetailProps) {
1818
<header className="flex justify-between border-b border-b-gray-200 p-5 py-4">
1919
<h2 className="break-words text-2xl font-extrabold">{title}</h2>
2020
<div className="mt-1 flex gap-1 text-sm text-gray-400">
21-
<p>{dayjs(startTime).format('YYYY-MM-DD')}</p>
21+
<p>{dateFormatter(startTime, 'YYYY-MM-DD')}</p>
2222
<p>-</p>
23-
<p>{dayjs(endTime).format('YYYY-MM-DD')}</p>
23+
<p>{dateFormatter(endTime, 'YYYY-MM-DD')}</p>
2424
</div>
2525
</header>
2626
<main

apps/frontend/app/(main)/contest/_components/Columns.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
'use client'
22

33
import Badge from '@/app/(main)/_components/Badge'
4+
import { dateFormatter } from '@/lib/utils'
45
import type { Contest } from '@/types/type'
56
import type { ColumnDef } from '@tanstack/react-table'
6-
import dayjs from 'dayjs'
77

88
export const columns: ColumnDef<Contest>[] = [
99
{
@@ -31,12 +31,12 @@ export const columns: ColumnDef<Contest>[] = [
3131
{
3232
header: 'Starts at',
3333
accessorKey: 'startTime',
34-
cell: ({ row }) => dayjs(row.original.startTime).format('YYYY-MM-DD')
34+
cell: ({ row }) => dateFormatter(row.original.startTime, 'YYYY-MM-DD')
3535
},
3636
{
3737
header: 'Ends at',
3838
accessorKey: 'endTime',
39-
cell: ({ row }) => dayjs(row.original.endTime).format('YYYY-MM-DD')
39+
cell: ({ row }) => dateFormatter(row.original.endTime, 'YYYY-MM-DD')
4040
},
4141
{
4242
header: 'Participants',

apps/frontend/app/(main)/contest/_components/ContestTable.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ import {
88
TableHeader,
99
TableRow
1010
} from '@/components/ui/table'
11+
import { dateFormatter } from '@/lib/utils'
1112
import type { Contest } from '@/types/type'
1213
import type { ColumnDef } from '@tanstack/react-table'
1314
import {
1415
flexRender,
1516
getCoreRowModel,
1617
useReactTable
1718
} from '@tanstack/react-table'
18-
import dayjs from 'dayjs'
1919
import type { Route } from 'next'
2020
import { useRouter } from 'next/navigation'
2121

@@ -47,7 +47,7 @@ export default function ContestTable({ data }: ContestTableProps) {
4747
return (
4848
<p className="text-center">
4949
<span className="text-xs md:text-sm">
50-
{dayjs(row.original.startTime).format('YYYY-MM-DD')}
50+
{dateFormatter(row.original.startTime, 'YYYY-MM-DD')}
5151
</span>
5252
</p>
5353
)
@@ -64,7 +64,7 @@ export default function ContestTable({ data }: ContestTableProps) {
6464
return (
6565
<p className="text-center">
6666
<span className="text-xs md:text-sm">
67-
{dayjs(row.original.endTime).format('YYYY-MM-DD')}
67+
{dateFormatter(row.original.endTime, 'YYYY-MM-DD')}
6868
</span>
6969
</p>
7070
)

apps/frontend/app/(main)/notice/[id]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { baseUrl } from '@/lib/constants'
2-
import dayjs from 'dayjs'
2+
import { dateFormatter } from '@/lib/utils'
33
import { sanitize } from 'isomorphic-dompurify'
44
import Link from 'next/link'
55
import { RxHamburgerMenu } from 'react-icons/rx'
@@ -30,7 +30,7 @@ export default async function NoticeDetail({
3030
<h2 className="break-words text-lg font-semibold">{title}</h2>
3131
<div className="mt-1 flex justify-between text-sm text-gray-400">
3232
<p>{createdBy}</p>
33-
<p>{dayjs(createTime).format('YYYY-MM-DD')}</p>
33+
<p>{dateFormatter(createTime, 'YYYY-MM-DD')}</p>
3434
</div>
3535
</header>
3636
<main

apps/frontend/app/(main)/notice/_components/Columns.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
'use client'
22

3-
import { cn } from '@/lib/utils'
3+
import { cn, dateFormatter } from '@/lib/utils'
44
import type { Notice } from '@/types/type'
55
import type { ColumnDef } from '@tanstack/react-table'
6-
import dayjs from 'dayjs'
76
import { PiPushPinFill } from 'react-icons/pi'
87

98
export const columns: ColumnDef<Notice>[] = [
@@ -38,6 +37,6 @@ export const columns: ColumnDef<Notice>[] = [
3837
{
3938
header: 'Date',
4039
accessorKey: 'createTime',
41-
cell: ({ row }) => dayjs(row.original.createTime).format('YYYY-MM-DD')
40+
cell: ({ row }) => dateFormatter(row.original.createTime, 'YYYY-MM-DD')
4241
}
4342
]

apps/frontend/app/admin/contest/_components/Columns.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import { DataTableColumnHeader } from '@/components/DataTableColumnHeader'
44
import { Checkbox } from '@/components/ui/checkbox'
55
import { Switch } from '@/components/ui/switch'
6+
import { dateFormatter } from '@/lib/utils'
67
import type { ColumnDef } from '@tanstack/react-table'
7-
import dayjs from 'dayjs'
88
import { FiEyeOff } from 'react-icons/fi'
99
import { FiEye } from 'react-icons/fi'
1010

@@ -108,8 +108,7 @@ export const columns: ColumnDef<Contest>[] = [
108108
),
109109
cell: ({ row }) => (
110110
<p className="text-center">
111-
{dayjs(row.original.startTime).format('YYYY-MM-DD HH:mm')} ~{' '}
112-
{dayjs(row.original.endTime).format('YYYY-MM-DD HH:mm')}
111+
{`${dateFormatter(row.original.startTime, 'YYYY-MM-DD')} ~ ${dateFormatter(row.original.endTime, 'YYYY-MM-DD')}`}
113112
</p>
114113
)
115114
},

apps/frontend/app/admin/problem/[id]/_components/Columns.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use client'
22

3+
import { dateFormatter } from '@/lib/utils'
34
import type { SubmissionItem } from '@/types/type'
45
import type { ColumnDef } from '@tanstack/react-table'
5-
import dayjs from 'dayjs'
66

77
export const columns: ColumnDef<SubmissionItem>[] = [
88
{
@@ -43,7 +43,7 @@ export const columns: ColumnDef<SubmissionItem>[] = [
4343
header: () => 'Submission Time',
4444
accessorKey: 'createTime',
4545
cell: ({ row }) =>
46-
dayjs(row.original.createTime).format('YYYY-MM-DD HH:mm:ss')
46+
dateFormatter(row.original.createTime, 'YYYY-MM-DD HH:mm:ss')
4747
},
4848
{
4949
header: () => 'Code Size',

0 commit comments

Comments
 (0)