constructor({opts, dp} = {}) {
        this.opts = opts;
        this.dp = dp;
        let {timeFormat} = this.dp.locale;

        if (timeFormat && (timeFormat.match(getWordBoundaryRegExp('h')) || timeFormat.match(getWordBoundaryRegExp('hh')))) {
            this.ampm = true;
        }

        this.init();
    }
Timepicker

How does it work:
Timepicker has its own hour and minute values. At the start they will be equal to current time, or to min/max date values.
When user selects date, timepicker add its values to the date (when consts.eventChangeSelectedDate is triggered).
When lastSelectedDate is changed (e.g. when user clicks on already selected date in multiple dates mode or in range mode)
then hour and minute values are taken from this date and stored in a timepicker instance.