Date time range in Vue Datetime picker component
20 Sep 20247 minutes to read
DateTime Restriction
DateTimePicker provides an option to select a date and time value within a specified range by using the min
and max
properties. Always the min value has to be lesser than the max value.
When the min and max properties are configured and the selected datetime value is out-of-range or invalid, then the model value will be set to out of range
datetime value or null
respectively with highlighted error
class to indicates the datetime is out of range or invalid. The value property depends on the min/max with respect to strictMode
property.
The below example allows selecting a date within the range from 7th to 27th day in a month.
<template>
<div id="app">
<div class='wrapper'>
<ejs-datetimepicker :min="minDate" :max="maxDate" :placehoder="waterMark" :value="dateVal"></ejs-datetimepicker>
</div>
</div>
</template>
<script setup>
import { DateTimePickerComponent as EjsDatetimepicker } from '@syncfusion/ej2-vue-calendars';
const minDate = new Date(new Date().getFullYear(), new Date().getMonth(), 7, 0, 0, 0);
const maxDate = new Date(new Date().getFullYear(), new Date().getMonth(), 27, new Date().getHours(), new Date().getMinutes(), new Date().getSeconds());
const dateVal = new Date(new Date().setDate(14));
const waterMark = 'Select a datetime';
</script>
<style>
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-lists/styles/material.css';
@import "../node_modules/@syncfusion/ej2-vue-calendars/styles/material.css";
.wrapper {
max-width: 250px;
margin: 0 auto;
}
</style>
<template>
<div id="app">
<div class='wrapper'>
<ejs-datetimepicker :min="minDate" :max="maxDate" :placehoder="waterMark" :value="dateVal"></ejs-datetimepicker>
</div>
</div>
</template>
<script>
import { DateTimePickerComponent } from '@syncfusion/ej2-vue-calendars';
export default {
name: "App",
components: {
"ejs-datetimepicker": DateTimePickerComponent
},
data() {
return {
minDate: new Date(new Date().getFullYear(), new Date().getMonth(), 7, 0, 0, 0),
maxDate: new Date(new Date().getFullYear(), new Date().getMonth(), 27, new Date().getHours(), new Date().getMinutes(), new Date().getSeconds()),
dateVal: new Date(new Date().setDate(14)),
waterMark: 'Select a datetime'
}
}
}
</script>
<style>
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-lists/styles/material.css';
@import "../node_modules/@syncfusion/ej2-vue-calendars/styles/material.css";
.wrapper {
max-width: 250px;
margin: 0 auto;
}
</style>
If the value of
min
ormax
properties changed through code behind, then you have to update thevalue
property to set within the range.
Time Restriction
DateTimePicker provides an option to select a time value within a specified range by using the minTime
and maxTime
properties. Always the minTime value has to be lesser than the maxTime value.
When minTime and maxTime are set, the component will prioritize min if minTime is less than the current min time, and max if maxTime is greater than the current max time. Conversely, it will prioritize minTime if it is greater than the current min time, and maxTime if it is less than the current max time. These behaviors apply only when min and max Dates are selected or pre-bounded, with minTime and maxTime values set for all other dates apart from min and max dates.
The value property depends on the minTime/maxTime with respect to strictMode
property.
The below example allows selecting a time within the range from 10:00 AM to 8:30 PM of each day.
<template>
<div id="app">
<div class='wrapper'>
<ejs-datetimepicker :min="minDate" :max="maxDate" :placehoder="waterMark" :value="dateVal"></ejs-datetimepicker>
</div>
</div>
</template>
<script setup>
import { DateTimePickerComponent as EjsDatetimepicker } from '@syncfusion/ej2-vue-calendars';
const minDate = new Date(new Date().getFullYear(), new Date().getMonth(), 7, 0, 0, 0);
const maxDate = new Date(new Date().getFullYear(), new Date().getMonth(), 27, new Date().getHours(), new Date().getMinutes(), new Date().getSeconds());
const dateVal = new Date(new Date().setDate(14));
const waterMark = 'Select a datetime';
</script>
<style>
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-lists/styles/material.css';
@import "../node_modules/@syncfusion/ej2-vue-calendars/styles/material.css";
.wrapper {
max-width: 250px;
margin: 0 auto;
}
</style>
<template>
<div id="app">
<div class='wrapper'>
<ejs-datetimepicker :min="minDate" :max="maxDate" :placehoder="waterMark" :value="dateVal"></ejs-datetimepicker>
</div>
</div>
</template>
<script>
import { DateTimePickerComponent } from '@syncfusion/ej2-vue-calendars';
export default {
name: "App",
components: {
"ejs-datetimepicker": DateTimePickerComponent
},
data() {
return {
minDate: new Date(new Date().getFullYear(), new Date().getMonth(), 7, 0, 0, 0),
maxDate: new Date(new Date().getFullYear(), new Date().getMonth(), 27, new Date().getHours(), new Date().getMinutes(), new Date().getSeconds()),
dateVal: new Date(new Date().setDate(14)),
waterMark: 'Select a datetime'
}
}
}
</script>
<style>
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-lists/styles/material.css';
@import "../node_modules/@syncfusion/ej2-vue-calendars/styles/material.css";
.wrapper {
max-width: 250px;
margin: 0 auto;
}
</style>