๊ณผ์ ๋ฅผ ํ๋ฉด์ ๋ฌ๋ ฅ์ ๊ตฌํํ๊ฒ ๋์๋๋ฐ ๋ฌ๋ ฅ์ ์ง์ ๊ตฌํํ๋ ๋ฐฉ์๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋๋์๋ค.
๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌ๋ ฅ์ ๊ตฌํํ๋ ๊ฒ์ผ๋ก ๊ฒฐ์ ํ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฝ๊ฒ ๋ฌ๋ ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ณ ์ปค์คํฐ๋ง์ด์ง๋ ์ฌ์ธ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
ํ์ง๋ง ์ปค์คํฐ๋ง์ด์ง์ ์ฝ์ง ์์๋ค..
์ฒ์์๋ Mui์ date picker, date range picker ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
Mui Date picker๋ ์ข์ date ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. date ์ ํ, time ์ ํ, date range ์ ํ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํด ์ฃผ์๋ค.
ํ์ง๋ง CSS๋ฅผ ์ปค์คํ
ํ๊ธฐ์๋ ๋ง์ ์ด๋ ค์์ ๊ฒช์๋ค.
import { makeStyles } from "@material-ui/core/styles";
export const styles = makeStyles(() => ({
root: {
border: "1px solid grey"
}
}));
makeStlyes()๋ฅผ ์ฌ์ฉํด์ ์ปค์คํ
์ ํ๋ คํ์ง๋ง Date์ ๋ ์ง Text ๋ถ๋ถ๋ง ์ปค์คํ
์ ํ ์ ์์๊ณ ๋ฐ์ ๋ ์ง๋ฅผ ๋ฐ๊พธ๊ธฐ์๋ ๋ง์ ์๊ฐ์ด ์ง๋ ๋ ์ด์ ๊ฐ๋ง์ด ์์ด ํฌ๊ธฐํ๋ค.
(date picker์ root element ์ ๊ทผ์ ๊ฐ๋ฅํ์ง๋ง ๊ทธ ์์ element์ ์ ๊ทผ์ ๊ณ์ํด์ ์คํจํ๋ค..)
Mui๋ lab ํ๊ทธ์ ์๋๊ฑฐ ๋ณด๋ ์์ง ๊ณ์ํด์ ๊ฐ๋ฐ์ค์ธ ๊ฒ ๊ฐ๋ค.
https://reactdatepicker.com/
๋ค์ ๋์์ผ๋ก ์ฐพ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ react date picker ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. Mui๋ณด๋ค ์์๊ฐ ๋ ๋ง๊ณ ๊ณต์ ๋ฌธ์์ ์ปค์คํ
ํ๋ ๋ฒ๋ ์ ํ์์ด Mui๋ณด๋ค ์์ํ๋ค ์๊ฐํ๋ค.
yarn add react-datepicker
() => {
const [startDate, setStartDate] = useState(new Date());
return (
<DatePicker selected={startDate} onChange={(date) => setStartDate(date)} />
);
};
date picker, date range picker, time picker๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ค.
ํ์ง๋ง react-datepicker๋ ์ปค์คํฐ๋ง์ด์ง์ ์ฝ์ง ์์๋ค.
ํ๋ก์ ํธ์์ next.js๋ฅผ ์ฌ์ฉํด์ css๋ฅผ importํด์ค๋ ๊ฒ๋ถํฐ ๋งํ๋ค.
next.js์์ ํด๋์ค ๋ช
์ ๋ฐ๋ผ css ์ ์ฉ์ ์ํด global css๋ก ์ง์ ํด์ฃผ์ด์ผ ํ๋ค. ์ด ๋ถ๋ถ์ next.js๋ฅผ ์ ์์๋ ํ์๋ถ์ ๋์์ผ๋ก ํด๊ฒฐํ๋คใ
ใ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๋ฉด์ ๋ด๊ฐ ์์น ์์ ๋ถ๋ถ๊น์ง css๊ฐ ์ ์ฉ๋๋ ์ํฉ์ด ๋ง์๋๋ฐ :not ์ฐ์ฐ์๋ฅผ ์ ํ์ฉํด์ผ๊ฒ ๋ค๊ณ ๋๊ผ๋ค.
const start = dayjs(startDate);
const end = dayjs(endDate);
const startFormat = start.format("YYYY-MM-DD");
const endFormat = end.format("YYYY-MM-DD");
const diff = Math.floor(end.diff(start, "day", true)); // ๋ ์ง ์ฐจ์ด
dayjs๋ ๋ ์ง์ ์๊ฐ์ ์ถ๋ ฅํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๋ฌ๋ ฅ์์ ๋ฐ์์จ ๋ ์ง๋ฅผ dayjs()์์ ๋ฃ์ด์ฃผ๋ฉด ์์์
๋ฐ์ดํฐ๋ฅผ ๋ฐํํด์ค๋ค.
์ด ๋ฐ์ดํฐ๋ฅผ format์ ํตํด ์์ ์ด ์ํ๋๋๋ก date format์ ํ ์ ์๋ค.
์์ ์์๋ "YYYY-MM-DD"๋ก ํฌ๋งท์ ํด์ฃผ์๋๋ฐ
๊ฒฐ๊ณผ๋ก 2022-03-15
๋ก ๋์จ๋ค.