11"use client" ;
22
3- import { forwardRef , useState } from "react" ;
4- import { formatDate } from "@/lib/utils/dateUtils" ;
3+ import { forwardRef } from "react" ;
54import { ko } from "date-fns/locale" ;
65import DatePicker , { registerLocale } from "react-datepicker" ;
7- import "react-datepicker/dist/react-datepicker.css" ;
86import Image from "next/image" ;
7+ import "react-datepicker/dist/react-datepicker.css" ;
98import calendarIcon from "../../../../public/icon/calendar_icon.svg" ;
109
1110registerLocale ( "ko" , ko ) ;
1211
13- interface DateInputProps {
12+ interface DateInputTriggerProps {
1413 value : string ;
1514 onClick ?: ( ) => void ;
1615}
1716
18- const DateInputTrigger = forwardRef < HTMLDivElement , DateInputProps > (
17+ interface DateInputProps {
18+ value : string ;
19+ onChange : ( date : string ) => void ;
20+ }
21+
22+ const DateInputTrigger = forwardRef < HTMLDivElement , DateInputTriggerProps > (
1923 ( { value, onClick } , ref ) => (
2024 < div
2125 ref = { ref }
@@ -33,26 +37,33 @@ const DateInputTrigger = forwardRef<HTMLDivElement, DateInputProps>(
3337) ;
3438DateInputTrigger . displayName = "DateInputTrigger" ;
3539
36- const DateInput = ( ) => {
37- const [ selectedDate , setSelectedDate ] = useState < Date | null > ( null ) ;
38-
39- const formattedDate = selectedDate
40- ? formatDate ( selectedDate . toISOString ( ) , true )
41- : "" ;
40+ const DateInput = ( { value, onChange } : DateInputProps ) => {
41+ const handleDateChange = ( date : Date | null ) => {
42+ if ( date ) {
43+ const localDate = new Date ( date . getTime ( ) + 9 * 60 * 60 * 1000 ) ;
44+ const formattedDate = localDate
45+ . toISOString ( )
46+ . slice ( 0 , 16 )
47+ . replace ( "T" , " " ) ;
48+ onChange ( formattedDate ) ;
49+ } else {
50+ onChange ( "" ) ;
51+ }
52+ } ;
4253 return (
4354 < div className = "flex flex-col" >
4455 < label className = "font-medium text-gray-800 text-lg mb-[8px] tablet:text-2lg pc:text-2lg" >
4556 마감일
4657 </ label >
4758 < DatePicker
48- selected = { selectedDate }
49- onChange = { ( date ) => setSelectedDate ( date ) }
59+ selected = { value ? new Date ( value ) : null }
60+ onChange = { handleDateChange }
5061 dateFormat = "Pp"
5162 locale = "ko"
5263 showTimeSelect
5364 timeFormat = "HH:mm"
5465 timeIntervals = { 5 }
55- customInput = { < DateInputTrigger value = { formattedDate } /> }
66+ customInput = { < DateInputTrigger value = { value } /> }
5667 />
5768 </ div >
5869 ) ;
0 commit comments