简体   繁体   中英

jquery datetimepicker displaying i on the minutes

I wanted to add a datetime picker to my page. However, as can see below, it shows i instead of the minutes. Can you please help?

 $(function() { $('#datetimepicker').datetimepicker({ format: 'DD/MM/YYYY HH:MM', lang: 'en', startDate: moment().toDate(), minDate: moment().toDate(), maxDate: moment().add(20, "days").toDate(), }); $.datetimepicker.setDateFormatter({ parseDate: function(date, format) { var d = moment(date, format); return d.isValid() ? d.toDate() : false; }, formatDate: function(date, format) { return moment(date).format(format); }, }); }); 
 <link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> <script src="https://momentjs.com/downloads/moment.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script> <input type="text" id="datetimepicker" /> 

You can add a formatTime property:

 $(function() { $('#datetimepicker').datetimepicker({ format: 'DD/MM/YYYY', // added formatTime formatTime: 'HH:mm', lang: 'en', startDate: moment().toDate(), minDate: moment().toDate(), maxDate: moment().add(20, "days").toDate(), }); $.datetimepicker.setDateFormatter({ parseDate: function(date, format) { var d = moment(date, format); return d.isValid() ? d.toDate() : false; }, formatDate: function(date, format) { return moment(date).format(format); }, }); }); 
 <link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> <script src="https://momentjs.com/downloads/moment.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script> <input type="text" id="datetimepicker" /> 

The default value of format/formatTime/formatDate is:

format: 'Y/m/d H:i',
formatTime: 'H:i',
formatDate: 'Y/m/d',

according to:

date formatter utility library that allows formatting date/time variables or Date objects using PHP DateTime format.

Hence, you need to change the previous values to:

format:'d/m/Y H:i',
formatDate: 'd/m/Y',

Moreover, if you want to change the selected value I would suggest to use the following callback instead of $.datetimepicker.setDateFormatter :

// when a date is changed
onChangeDateTime: function(date, input, event) {

 $('#datetimepicker').datetimepicker({ format:'d/m/YH:i', formatDate: 'd/m/Y', lang:'en', startDate: moment().toDate(), minDate: moment().toDate(), maxDate: moment().add(20, "days").toDate(), onChangeDateTime: function(date, input, event) { input.val(moment(date).format("DD/MM/YYYY")); } }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.css" rel="stylesheet"/> <script src="https://momentjs.com/downloads/moment.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script> <input type="text" id="datetimepicker" /> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM