Date Formats
The range works with different date types:
- JS date object - a common way of passing a date is through a Date object:
new Date(1995, 11, 17, 15, 24)(make sure to not simply pass a date string tonew Date()) - ISO date string - standardized way of passing dates:
'2008-09-15T15:53:00'(make sure to pass it as a string) - Moment.js object - a great solution that solves common date management difficulties:
moment([2018, 3, 27, 12, 15])(make sure to have moment.js loaded)
When passing dates to the component - eg. invalids, min/max - you can do it in either format and the picker will automatically know what to do with it. If you want to specify how the picker should return values, you can do it in the returnFormat option.
Demo
JS date object
const [myValue, setValue] = useState(new Date());
const onChange = useCallback((ev) => {
setValue(ev.value);
});
setValue([new Date(2020, 10, 15), new Date(2020, 10, 21)]);
<Datepicker returnFormat="jsdate" value={myValue} onChange={onChange} />
ISO date string
const [myValue, setValue] = useState(new Date());
const onChange = useCallback((ev) => {
setValue(ev.value);
});
setValue(['2020-05-20', '2020-05-26']);
<Datepicker returnFormat="iso8601" value={myValue} onChange={onChange} />
Moment.js object
const [myValue, setValue] = useState(new Date());
const onChange = useCallback((ev) => {
setValue(ev.value);
});
setValue([moment([2020, 2, 6]), moment([2020, 2, 12])]);
<Datepicker returnFormat="moment" value={myValue} onChange={onChange} />
JSXTSX
import { Button, Datepicker, Page, setOptions } from '@mobiscroll/react';
import moment from 'moment';
import { useCallback, useMemo, useState } from 'react';
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
function App() {
const [dateObj, setDateObj] = useState();
const [iso, setISO] = useState();
const [momentObj, setMomentObj] = useState();
const objString = useMemo(() => (dateObj ? dateObj.toString() : null), [dateObj]);
const momentString = useMemo(() => (momentObj ? momentObj[0].toString() + ' - ' + momentObj[1].toString() : null), [momentObj]);
const setCustomObj = useCallback(() => {
setDateObj([new Date(2020, 10, 15), new Date(2020, 10, 21)]);
}, []);
const setCustomISO = useCallback(() => {
setISO(['2020-05-20', '2020-05-26']);
}, []);
const setCustomMoment = useCallback(() => {
setMomentObj([moment([2020, 2, 6]), moment([2020, 2, 12])]);
}, []);
const handleDateObjChange = useCallback((ev) => {
setDateObj(ev.value);
}, []);
const handleIsoChange = useCallback((ev) => {
setISO(ev.value);
}, []);
const handleMomentChange = useCallback((ev) => {
setMomentObj(ev.value);
}, []);
return (
<Page>
<div className="mbsc-form-group">
<div className="mbsc-form-group-title">Working with Js Date Objects</div>
<div className="mbsc-button-group-block">
<Button onClick={setCustomObj}>Set: Sun Nov 15 2020 - Sat Nov 21 2020</Button>
</div>
<Datepicker
controls={['calendar']}
select="range"
value={dateObj}
onChange={handleDateObjChange}
inputStyle="outline"
label="Date object"
labelStyle="stacked"
/>
</div>
<div className="mbsc-padding">Return value: {objString}</div>
<div className="mbsc-form-group">
<div className="mbsc-form-group-title">Working with Date strings</div>
<div className="mbsc-button-group-block">
<Button onClick={setCustomISO}>Set: 2020-05-20 - 2020-05-26</Button>
</div>
<Datepicker
controls={['calendar']}
select="range"
returnFormat="iso8601"
value={iso}
onChange={handleIsoChange}
inputStyle="outline"
label="ISO string"
labelStyle="stacked"
/>
</div>
<div className="mbsc-padding">Return value: {iso}</div>
<div className="mbsc-form-group">
<div className="mbsc-form-group-title">Working with Moment JS Objects</div>
<div className="mbsc-button-group-block">
<Button onClick={setCustomMoment}>Set: 2020-03-06 - 2020-03-12</Button>
</div>
<Datepicker
controls={['calendar']}
select="range"
returnFormat="moment"
value={momentObj}
onChange={handleMomentChange}
inputStyle="outline"
label="Moment JS"
labelStyle="stacked"
/>
</div>
<div className="mbsc-padding">Return value: {momentString}</div>
</Page>
);
}
export default App;
import { Button, Datepicker, MbscDatepickerChangeEvent, Page, setOptions } from '@mobiscroll/react';
import moment from 'moment';
import { FC, useCallback, useMemo, useState } from 'react';
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
const App: FC = () => {
const [dateObj, setDateObj] = useState<Date[]>();
const [iso, setISO] = useState<string[]>();
const [momentObj, setMomentObj] = useState<object[]>();
const objString = useMemo(() => (dateObj ? dateObj.toString() : null), [dateObj]);
const momentString = useMemo(() => (momentObj ? momentObj[0].toString() + ' - ' + momentObj[1].toString() : null), [momentObj]);
const setCustomObj = useCallback(() => {
setDateObj([new Date(2020, 10, 15), new Date(2020, 10, 21)]);
}, []);
const setCustomISO = useCallback(() => {
setISO(['2020-05-20', '2020-05-26']);
}, []);
const setCustomMoment = useCallback(() => {
setMomentObj([moment([2020, 2, 6]), moment([2020, 2, 12])]);
}, []);
const handleDateObjChange = useCallback((ev: MbscDatepickerChangeEvent) => {
setDateObj(ev.value as Date[]);
}, []);
const handleIsoChange = useCallback((ev: MbscDatepickerChangeEvent) => {
setISO(ev.value as string[]);
}, []);
const handleMomentChange = useCallback((ev: MbscDatepickerChangeEvent) => {
setMomentObj(ev.value as object[]);
}, []);
return (
<Page>
<div className="mbsc-form-group">
<div className="mbsc-form-group-title">Working with Js Date Objects</div>
<div className="mbsc-button-group-block">
<Button onClick={setCustomObj}>Set: Sun Nov 15 2020 - Sat Nov 21 2020</Button>
</div>
<Datepicker
controls={['calendar']}
select="range"
value={dateObj}
onChange={handleDateObjChange}
inputStyle="outline"
label="Date object"
labelStyle="stacked"
/>
</div>
<div className="mbsc-padding">Return value: {objString}</div>
<div className="mbsc-form-group">
<div className="mbsc-form-group-title">Working with Date strings</div>
<div className="mbsc-button-group-block">
<Button onClick={setCustomISO}>Set: 2020-05-20 - 2020-05-26</Button>
</div>
<Datepicker
controls={['calendar']}
select="range"
returnFormat="iso8601"
value={iso}
onChange={handleIsoChange}
inputStyle="outline"
label="ISO string"
labelStyle="stacked"
/>
</div>
<div className="mbsc-padding">Return value: {iso}</div>
<div className="mbsc-form-group">
<div className="mbsc-form-group-title">Working with Moment JS Objects</div>
<div className="mbsc-button-group-block">
<Button onClick={setCustomMoment}>Set: 2020-03-06 - 2020-03-12</Button>
</div>
<Datepicker
controls={['calendar']}
select="range"
returnFormat="moment"
value={momentObj}
onChange={handleMomentChange}
inputStyle="outline"
label="Moment JS"
labelStyle="stacked"
/>
</div>
<div className="mbsc-padding">Return value: {momentString}</div>
</Page>
);
};
export default App;