5

I am using pikaday module for datepicker, but the format comes as inappropriate format. I tried adding this line of code but still not working:

.config(['pikadayConfigProvider', function (pikaday) {
    pikaday.setConfig({
        numberOfMonths: 1,
        format: "YYYY/MM/DD"
    });
}]) 

This is how my html looks like:

<div class="modal-body">
  <form role="form">
    <div class="form-group">
      <input type="text" class="form-control" pikaday="myPickerObject" name="time" ng-model="clas.class_.time" placeholder="Enter time" tabindex="3">
    </div>
  </form>
</div>

Also tried to add as an inline attribute

format = "yyyy/mm/dd"

still not working.

Any help

Rajesh
  • 24,354
  • 5
  • 48
  • 79
mizlul
  • 75
  • 1
  • 9
  • https://github.com/dbushell/Pikaday – Rayon Jul 19 '16 at 10:51
  • @Rayon i have looked at this link but still I am not able to fix this... Could you tell me more specifically what should I add or modify – mizlul Jul 19 '16 at 10:55
  • Do share a fiddle so that one can play with it.... – Rayon Jul 19 '16 at 10:55
  • also I would be more happy if I would find a datetimepicker not only datepicker, are there any datetimepicker for angularjs 1.2.16, ui-bootstrap 0.12.0 – mizlul Jul 19 '16 at 10:58

3 Answers3

4

You can use moment.js and set the format by setting

defaultDate : moment().format("MMM YYYY")

this will be the initial input date display format. For displaying/processing the date in other desired formats, use

var field = document.getElementById('datepicker');
var picker = new Pikaday({
onSelect: function(date) {
    field.value = this.getMoment().format('Do MMMM YYYY');
    }
});
Pratikshya
  • 192
  • 8
2

use moment.js to set the date format:

var picker = new Pikaday(
{
    field: document.getElementById('eDate'),
    toString(date, format) { // using moment
        return moment(date).format('MM/DD/YYYY');
    },
});
Airn5475
  • 2,452
  • 29
  • 51
ezlev
  • 21
  • 1
2

quick update, if you don't want to use moment.js, you can fdo the following

new Pikaday({
    field: document.getElementById('eDate'), 
    toString: function(date) {
        var parts = [('0'+date.getDate()).slice(-2), ('0'+(date.getMonth()+1)).slice(-2), date.getFullYear()];
        return parts.join("-");
    }
})

this will produce 18-07-1980. You can change from '-' to '/' by changing return parts.join("-"); and you can rearrange parts to apply mm/dd/yyyy via parts array

Nick Zulu
  • 333
  • 2
  • 10