LoginSignup
2
0

More than 1 year has passed since last update.

html5標準Datepickerを使う

inputタグに type="datetime-local" を指定すると利用できます

import React, { useState } from "react";

const DatePicker = () => {
    const [selected, setSelected] = useState("");


    return (
        <div className="form-check">
            <input type="datetime-local" value={selected}
            onChange={event => setSelected(event.target.value)}></input>
            
            <div>{selected.replace("T", " ")}が選択されました!</div>
        </div>
    )
}
export default DatePicker;

Chromeだとカレンダーと時間選択ポップアップが表示されます
スクリーンショット 2022-12-04 0.16.17.png

Safariだと時間はキーボード入力する必要があります
スクリーンショット 2022-12-04 0.17.50.png

react-datepickerを使う

react-datepickerスタート手順に沿って必要なライブラリをインポートして利用します

import React, { useState } from "react";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css"

const DatePickerComponent = () => {
    const [selectedDate, setSelectedDate] = useState<Date>();


    return (
        <DatePicker 
            dateFormat="yyyy/MM/dd HH:mm"
            locale="ja"
            selected={selectedDate} 
            onChange={date => setSelectedDate(date!)}
            showTimeSelect
            timeIntervals={30}/>
    )
}
export default DatePickerComponent;

react-datepickerライブラリのcssが適用されるためブラウザ間でのレイアウト差異がなくなります

Chrome表示
スクリーンショット 2022-12-04 0.50.36.png

Safari表示
スクリーンショット 2022-12-04 0.50.56.png

react-datepickerの注意点

dateFormatに時間のフォーマットまで指定する

timeFormat 属性に値を指定しても入力内容に反映されません。。
dateFormat 属性に yyyy/MM/dd HH:mm まで指定する必要があります

        <DatePicker 
            dateFormat="yyyy/MM/dd"
            locale="ja"
            selected={selectedDate} 
            onChange={date => setSelectedDate(date!)}
            showTimeSelect
            timeIntervals={30}
            timeFormat="HH:mm"/>

スクリーンショット 2022-12-04 1.00.55.png

showTimeSelect属性を記述しないと時間が変更できない

dateFormat="yyyy/MM/dd HH:mm" とすればキーボード入力で時間が変更できそうに見えますが、、
スクリーンショット 2022-12-04 1.05.49.png

キーボードから時間を変更してもフォーカスを外すと元の時間に戻ってしまいます
スクリーンショット 2022-12-04 1.06.05.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0