Edit in JSFiddle

<div class="container" ng-app="app" ng-controller="MainCtrl">
    <header>
        <div class="page-header">
             <h2>バインディングに連動したフォームの検証<small>(日付ピッカー)</small></h2>

        </div>
    </header>
    <section>
        <form name="form" class="form-horizontal">
            <!-- HTML5バージョン -->
            <div class="form-group" ng-class="{'has-error':!form.date.$valid}">
                <label for="diDate1" class="col-sm-4 control-label">日付(HTML5)</label>
                <div class="col-sm-4">
                    <!-- type="date"に注意。これはHTML5タグ。FFではいまいちなサポートだが動かないことはない。 https://docs.angularjs.org/api/ng/input/input%5Bdate%5D -->
                    <!-- ng-model="date"の初期値設定はapp.jsで行っている。 -->
                    <!-- minとmaxでvalidになる期間を指定。値の設定はapp.jsで行っている。 -->
                    <!-- 「| date:'yyyy-MM-dd'」はdateオブジェクトをyyy-MM-ddのフォーマットで出力するためのフィルタ指定。 https://docs.angularjs.org/api/ng/filter/date -->
                    <!-- requiredでnullチェックも同時に行っている。 -->
                    <input id="diDate1" type="date" class="form-control" placeholder="yyyy-MM-dd(今日から1年後まで)" ng-model="date" name="date" required min="{{minDate | date:'yyyy-MM-dd'}}" max="{{maxDate | date:'yyyy-MM-dd'}}" />
                </div>
            </div>
            <!-- datetimepickerバージョン -->
            <div class="form-group" ng-class="{'has-error':!form.date.$valid}">
                <label for="diDate2" class="col-sm-4 control-label">日付(datetimepicker)</label>
                <div class="col-sm-4">
                    <!-- bootstrapのdropdownコンポーネントを使用 http://getbootstrap.com/components/#dropdowns -->
                    <div class="dropdown">
                        <!-- dropdownを表示するリンク(日付入力およびアイコン) --> <a class="dropdown-toggle" role="button" data-toggle="dropdown" data-target="#" href="#">
                    <div class="input-group">
                      <input id="diDate2" type="date" class="form-control" placeholder="yyyy-MM-dd(今日から1年後まで)"
                             ng-model="date" name="date" required
                             min="{{minDate | date:'yyyy-MM-dd'}}" max="{{maxDate | date:'yyyy-MM-dd'}}"
                             />
                      <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>
                    </div>
                  </a>

                        <!-- dropdowそのもの -->
                        <ul class="dropdown-menu" role="menu">
                            <!-- data-*はカスタムタグに与える引数 -->
                            <!-- minView:dayで日付選択までにしている。これを外せば時:分まで選択可能。 -->
                            <!-- 日付選択時にonTimeSet()を呼ぶ -->
                            <!-- dropdownSelectorでdatePickerDropdownと関連付け -->
                            <datetimepicker data-ng-model="date" data-datetimepicker-config="{'minView':'day'}" data-on-set-time="onTimeSet" />
                        </ul>
                    </div>
                    <!-- dropdow -->
                </div>
                <!-- col -->
            </div>
            <!-- form-group -->
            <!-- 送信ボタン -->
            <div class="form-group">
                <div class="col-sm-offset-4 col-sm-2">
                    <button class="btn btn-primary btn-block" ng-disabled="!form.date.$valid">送信</button>
                </div>
            </div>
        </form>
    </section>
</div>
// appというAngularJSアプリケーションモジュールを作成
// datetimepickerモジュールを組み込み
var app = angular.module('app', ['ui.bootstrap.datetimepicker']);

// アプリケーションモジュールにMainCtrlというコントローラーを追加
app.controller('MainCtrl', function ($scope) {

    //初期選択の日付を今日の日付に設定
    $scope.date = new Date();

    //期間の最小を今日の日付に設定
    $scope.minDate = new Date();

    //期間の最大を今日の日付から1年後に設定
    var maxDate = new Date();
    maxDate.setFullYear(maxDate.getFullYear() + 1);
    $scope.maxDate = maxDate;

    //日付ピッカー選択時に呼ばれる
    $scope.onTimeSet = function (newDate, oldDate) {
        console.log(newDate);
        console.log(oldDate);
    }

    //カレンダーの表示を日本語にする
    moment.lang('ja');

});


/**
 * @license angular-bootstrap-datetimepicker  v0.2.2
 * (c) 2013 Knight Rider Consulting, Inc. http://www.knightrider.com
 * License: MIT
 * @author        Dale "Ducky" Lotts
 * @since        2013-Jul-8
 */
angular.module('ui.bootstrap.datetimepicker', []).constant('dateTimePickerConfig', {
    dropdownSelector: null,
    minuteStep: 5,
    minView: 'minute',
    startView: 'day',
    weekStart: 0
}).constant('dateTimePickerConfigValidation', function (configuration) {
    "use strict";
    var validOptions = ['startView', 'minView', 'minuteStep', 'dropdownSelector', 'weekStart'];
    for (var prop in configuration) {
        if (configuration.hasOwnProperty(prop)) {
            if (validOptions.indexOf(prop) < 0) {
                throw ("invalid option: " + prop);
            }
        }
    }
    var validViews = ['minute', 'hour', 'day', 'month', 'year'];
    if (validViews.indexOf(configuration.startView) < 0) {
        throw ("invalid startView value: " + configuration.startView);
    }
    if (validViews.indexOf(configuration.minView) < 0) {
        throw ("invalid minView value: " + configuration.minView);
    }
    if (validViews.indexOf(configuration.minView) > validViews.indexOf(configuration.startView)) {
        throw ("startView must be greater than minView");
    }
    if (!angular.isNumber(configuration.minuteStep)) {
        throw ("minuteStep must be numeric");
    }
    if (configuration.minuteStep <= 0 || configuration.minuteStep >= 60) {
        throw ("minuteStep must be greater than zero and less than 60");
    }
    if (configuration.dropdownSelector !== null && !angular.isString(configuration.dropdownSelector)) {
        throw ("dropdownSelector must be a string");
    }
    if (!angular.isNumber(configuration.weekStart)) {
        throw ("weekStart must be numeric");
    }
    if (configuration.weekStart < 0 || configuration.weekStart > 6) {
        throw ("weekStart must be greater than or equal to zero and less than 7");
    }
}).directive('datetimepicker', ['dateTimePickerConfig', 'dateTimePickerConfigValidation', function (defaultConfig, validateConfigurationFunction) {
    "use strict";
    return {
        restrict: 'E',
        require: 'ngModel',
        template: "<div class='datetimepicker'>" + "<table class='table-condensed'>" + "   <thead>" + "       <tr>" + "           <th class='left'" + "               data-ng-click=\"changeView(data.currentView, data.leftDate, $event)\"" + "               ><i class='glyphicon glyphicon-arrow-left'/></th>" + "           <th class='switch' colspan='5'" + "               data-ng-click=\"changeView(data.previousView, data.currentDate, $event)\"" + ">{{ data.title }}</th>" + "           <th class='right'" + "               data-ng-click=\"changeView(data.currentView, data.rightDate, $event)\"" + "             ><i class='glyphicon glyphicon-arrow-right'/></th>" + "       </tr>" + "       <tr>" + "           <th class='dow' data-ng-repeat='day in data.dayNames' >{{ day }}</th>" + "       </tr>" + "   </thead>" + "   <tbody>" + '       <tr data-ng-class=\'{ hide: data.currentView == "day" }\' >' + "           <td colspan='7' >" + "              <span    class='{{ data.currentView }}' " + "                       data-ng-repeat='dateValue in data.dates'  " + "                       data-ng-class='{active: dateValue.active, past: dateValue.past, future: dateValue.future}' " + "                       data-ng-click=\"changeView(data.nextView, dateValue.date, $event)\">{{ dateValue.display }}</span> " + "           </td>" + "       </tr>" + '       <tr data-ng-show=\'data.currentView == "day"\' data-ng-repeat=\'week in data.weeks\'>' + "           <td data-ng-repeat='dateValue in week.dates' " + "               data-ng-click=\"changeView(data.nextView, dateValue.date, $event)\"" + "               class='day' " + "               data-ng-class='{active: dateValue.active, past: dateValue.past, future: dateValue.future}' >{{ dateValue.display }}</td>" + "       </tr>" + "   </tbody>" + "</table></div>",
        scope: {
            ngModel: "=",
            onSetTime: "="
        },
        replace: true,
        link: function (scope, element, attrs) {
            var directiveConfig = {};
            if (attrs.datetimepickerConfig) {
                directiveConfig = scope.$eval(attrs.datetimepickerConfig);
            }
            var configuration = {};
            angular.extend(configuration, defaultConfig, directiveConfig);
            validateConfigurationFunction(configuration);
            var dataFactory = {
                year: function (unixDate) {
                    var selectedDate = moment.utc(unixDate).startOf('year');
                    var startDecade = (parseInt(selectedDate.year() / 10, 10) * 10);
                    var startDate = moment.utc(selectedDate).year(startDecade - 1).startOf('year');
                    var activeYear = scope.ngModel ? moment(scope.ngModel).year() : 0;
                    var result = {
                        'currentView': 'year',
                            'nextView': configuration.minView === 'year' ? 'setTime' : 'month',
                            'title': startDecade + '-' + (startDecade + 9),
                            'leftDate': moment.utc(startDate).subtract(9, 'year').valueOf(),
                            'rightDate': moment.utc(startDate).add(11, 'year').valueOf(),
                            'dates': []
                    };
                    for (var i = 0; i < 12; i++) {
                        var yearMoment = moment.utc(startDate).add(i, 'years');
                        var dateValue = {
                            'date': yearMoment.valueOf(),
                                'display': yearMoment.format('YYYY'),
                                'past': yearMoment.year() < startDecade,
                                'future': yearMoment.year() > startDecade + 9,
                                'active': yearMoment.year() === activeYear
                        };
                        result.dates.push(dateValue);
                    }
                    return result;
                },
                month: function (unixDate) {
                    var startDate = moment.utc(unixDate).startOf('year');
                    var activeDate = scope.ngModel ? moment(scope.ngModel).format('YYYY-MMM') : 0;
                    var result = {
                        'previousView': 'year',
                            'currentView': 'month',
                            'nextView': configuration.minView === 'month' ? 'setTime' : 'day',
                            'currentDate': startDate.valueOf(),
                            'title': startDate.format('YYYY'),
                            'leftDate': moment.utc(startDate).subtract(1, 'year').valueOf(),
                            'rightDate': moment.utc(startDate).add(1, 'year').valueOf(),
                            'dates': []
                    };
                    for (var i = 0; i < 12; i++) {
                        var monthMoment = moment.utc(startDate).add(i, 'months');
                        var dateValue = {
                            'date': monthMoment.valueOf(),
                                'display': monthMoment.format('MMM'),
                                'active': monthMoment.format('YYYY-MMM') === activeDate
                        };
                        result.dates.push(dateValue);
                    }
                    return result;
                },
                day: function (unixDate) {
                    var selectedDate = moment.utc(unixDate);
                    var startOfMonth = moment.utc(selectedDate).startOf('month');
                    var endOfMonth = moment.utc(selectedDate).endOf('month');
                    var startDate = moment.utc(startOfMonth).subtract(startOfMonth.weekday() - configuration.weekStart, 'days');
                    var activeDate = scope.ngModel ? moment(scope.ngModel).format('YYYY-MMM-DD') : '';
                    var result = {
                        'previousView': 'month',
                            'currentView': 'day',
                            'nextView': configuration.minView === 'day' ? 'setTime' : 'hour',
                            'currentDate': selectedDate.valueOf(),
                            'title': selectedDate.format('YYYY-MMM'),
                            'leftDate': moment.utc(startOfMonth).subtract(1, 'months').valueOf(),
                            'rightDate': moment.utc(startOfMonth).add(1, 'months').valueOf(),
                            'dayNames': [],
                            'weeks': []
                    };
                    for (var dayNumber = configuration.weekStart; dayNumber < configuration.weekStart + 7; dayNumber++) {
                        result.dayNames.push(moment.utc().weekday(dayNumber).format('dd'));
                    }
                    for (var i = 0; i < 6; i++) {
                        var week = {
                            dates: []
                        };
                        for (var j = 0; j < 7; j++) {
                            var monthMoment = moment.utc(startDate).add((i * 7) + j, 'days');
                            var dateValue = {
                                'date': monthMoment.valueOf(),
                                    'display': monthMoment.format('D'),
                                    'active': monthMoment.format('YYYY-MMM-DD') === activeDate,
                                    'past': monthMoment.isBefore(startOfMonth),
                                    'future': monthMoment.isAfter(endOfMonth)
                            };
                            week.dates.push(dateValue);
                        }
                        result.weeks.push(week);
                    }
                    return result;
                },
                hour: function (unixDate) {
                    var selectedDate = moment.utc(unixDate).hour(0).minute(0).second(0);
                    var activeFormat = scope.ngModel ? moment(scope.ngModel).format('YYYY-MM-DD H') : '';
                    var result = {
                        'previousView': 'day',
                            'currentView': 'hour',
                            'nextView': configuration.minView === 'hour' ? 'setTime' : 'minute',
                            'currentDate': selectedDate.valueOf(),
                            'title': selectedDate.format('YYYY-MMM-DD'),
                            'leftDate': moment.utc(selectedDate).subtract(1, 'days').valueOf(),
                            'rightDate': moment.utc(selectedDate).add(1, 'days').valueOf(),
                            'dates': []
                    };
                    for (var i = 0; i < 24; i++) {
                        var hourMoment = moment.utc(selectedDate).add(i, 'hours');
                        var dateValue = {
                            'date': hourMoment.valueOf(),
                                'display': hourMoment.format('H:00'),
                                'active': hourMoment.format('YYYY-MM-DD H') === activeFormat
                        };
                        result.dates.push(dateValue);
                    }
                    return result;
                },
                minute: function (unixDate) {
                    var selectedDate = moment.utc(unixDate).minute(0).second(0);
                    var activeFormat = scope.ngModel ? moment(scope.ngModel).format('YYYY-MM-DD H:mm') : '';
                    var result = {
                        'previousView': 'hour',
                            'currentView': 'minute',
                            'nextView': 'setTime',
                            'currentDate': selectedDate.valueOf(),
                            'title': selectedDate.format('YYYY-MMM-DD H:mm'),
                            'leftDate': moment.utc(selectedDate).subtract(1, 'hours').valueOf(),
                            'rightDate': moment.utc(selectedDate).add(1, 'hours').valueOf(),
                            'dates': []
                    };
                    var limit = 60 / configuration.minuteStep;
                    for (var i = 0; i < limit; i++) {
                        var hourMoment = moment.utc(selectedDate).add(i * configuration.minuteStep, 'minute');
                        var dateValue = {
                            'date': hourMoment.valueOf(),
                                'display': hourMoment.format('H:mm'),
                                'active': hourMoment.format('YYYY-MM-DD H:mm') === activeFormat
                        };
                        result.dates.push(dateValue);
                    }
                    return result;
                },
                setTime: function (unixDate) {
                    var tempDate = new Date(unixDate);
                    var newDate = new Date(tempDate.getTime() + (tempDate.getTimezoneOffset() * 60000));
                    if (configuration.dropdownSelector) {
                        jQuery(configuration.dropdownSelector).dropdown('toggle');
                    }
                    if (angular.isFunction(scope.onSetTime)) {
                        scope.onSetTime(newDate, scope.ngModel);
                    }
                    scope.ngModel = newDate;
                    return dataFactory[scope.data.currentView](unixDate);
                }
            };
            var getUTCTime = function () {
                var tempDate = (scope.ngModel ? moment(scope.ngModel).toDate() : new Date());
                return tempDate.getTime() - (tempDate.getTimezoneOffset() * 60000);
            };
            scope.changeView = function (viewName, unixDate, event) {
                if (event) {
                    event.stopPropagation();
                    event.preventDefault();
                }
                if (viewName && (unixDate > -Infinity) && dataFactory[viewName]) {
                    scope.data = dataFactory[viewName](unixDate);
                }
            };
            scope.changeView(configuration.startView, getUTCTime());
            scope.$watch('ngModel', function () {
                scope.changeView(scope.data.currentView, getUTCTime());
            });
        }
    };
}]);
/**
 * @license angular-bootstrap-datetimepicker  v0.2.2
 * (c) 2013 Knight Rider Consulting, Inc. http://www.knightrider.com
 * License: MIT
 */
 .datetimepicker {
    padding:4px;
    margin-top:1px;
    -webkit-border-radius:4px;
    -moz-border-radius:4px;
    border-radius:4px;
    direction:ltr
}
.datetimepicker-inline {
    width:220px
}
.datetimepicker.datetimepicker-rtl {
    direction:rtl
}
.datetimepicker.datetimepicker-rtl table tr td span {
    float:right
}
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
    top:0;
    left:0
}
[class*=" datetimepicker-dropdown"]:before {
    content:'';
    display:inline-block;
    border-left:7px solid transparent;
    border-right:7px solid transparent;
    border-bottom:7px solid #ccc;
    border-bottom-color:rgba(0, 0, 0, 0.2);
    position:absolute
}
[class*=" datetimepicker-dropdown"]:after {
    content:'';
    display:inline-block;
    border-left:6px solid transparent;
    border-right:6px solid transparent;
    border-bottom:6px solid #fff;
    position:absolute
}
[class*=" datetimepicker-dropdown-top"]:before {
    content:'';
    display:inline-block;
    border-left:7px solid transparent;
    border-right:7px solid transparent;
    border-top:7px solid #ccc;
    border-top-color:rgba(0, 0, 0, 0.2);
    border-bottom:0
}
[class*=" datetimepicker-dropdown-top"]:after {
    content:'';
    display:inline-block;
    border-left:6px solid transparent;
    border-right:6px solid transparent;
    border-top:6px solid #fff;
    border-bottom:0
}
.datetimepicker-dropdown-bottom-left:before {
    top:-7px;
    right:6px
}
.datetimepicker-dropdown-bottom-left:after {
    top:-6px;
    right:7px
}
.datetimepicker-dropdown-bottom-right:before {
    top:-7px;
    left:6px
}
.datetimepicker-dropdown-bottom-right:after {
    top:-6px;
    left:7px
}
.datetimepicker-dropdown-top-left:before {
    bottom:-7px;
    right:6px
}
.datetimepicker-dropdown-top-left:after {
    bottom:-6px;
    right:7px
}
.datetimepicker-dropdown-top-right:before {
    bottom:-7px;
    left:6px
}
.datetimepicker-dropdown-top-right:after {
    bottom:-6px;
    left:7px
}
.datetimepicker>div {
    display:none
}
.datetimepicker.minutes div.datetimepicker-minutes {
    display:block
}
.datetimepicker.hours div.datetimepicker-hours {
    display:block
}
.datetimepicker.days div.datetimepicker-days {
    display:block
}
.datetimepicker.months div.datetimepicker-months {
    display:block
}
.datetimepicker.years div.datetimepicker-years {
    display:block
}
.datetimepicker table {
    margin:0
}
.datetimepicker td, .datetimepicker th {
    text-align:center;
    width:20px;
    height:20px;
    -webkit-border-radius:4px;
    -moz-border-radius:4px;
    border-radius:4px;
    border:none
}
.table-striped .datetimepicker table tr td, .table-striped .datetimepicker table tr th {
    background-color:transparent
}
.datetimepicker table tr td.minute:hover {
    background:#eee;
    cursor:pointer
}
.datetimepicker table tr td.hour:hover {
    background:#eee;
    cursor:pointer
}
.datetimepicker table tr td.day:hover {
    background:#eee;
    cursor:pointer
}
.datetimepicker table tr td.past, .datetimepicker table tr td.future {
    color:#999
}
.datetimepicker table tr td.disabled, .datetimepicker table tr td.disabled:hover {
    background:none;
    color:#999;
    cursor:default
}
.datetimepicker table tr td.today, .datetimepicker table tr td.today:hover, .datetimepicker table tr td.today.disabled, .datetimepicker table tr td.today.disabled:hover {
    background-color:#fde19a;
    background-image:-moz-linear-gradient(top, #fdd49a, #fdf59a);
    background-image:-ms-linear-gradient(top, #fdd49a, #fdf59a);
    background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
    background-image:-webkit-linear-gradient(top, #fdd49a, #fdf59a);
    background-image:-o-linear-gradient(top, #fdd49a, #fdf59a);
    background-image:linear-gradient(top, #fdd49a, #fdf59a);
    background-repeat:repeat-x;
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
    border-color:#fdf59a #fdf59a #fbed50;
    border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
    filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)
}
.datetimepicker table tr td.today:hover, .datetimepicker table tr td.today:hover:hover, .datetimepicker table tr td.today.disabled:hover, .datetimepicker table tr td.today.disabled:hover:hover, .datetimepicker table tr td.today:active, .datetimepicker table tr td.today:hover:active, .datetimepicker table tr td.today.disabled:active, .datetimepicker table tr td.today.disabled:hover:active, .datetimepicker table tr td.today.active, .datetimepicker table tr td.today:hover.active, .datetimepicker table tr td.today.disabled.active, .datetimepicker table tr td.today.disabled:hover.active, .datetimepicker table tr td.today.disabled, .datetimepicker table tr td.today:hover.disabled, .datetimepicker table tr td.today.disabled.disabled, .datetimepicker table tr td.today.disabled:hover.disabled, .datetimepicker table tr td.today[disabled], .datetimepicker table tr td.today:hover[disabled], .datetimepicker table tr td.today.disabled[disabled], .datetimepicker table tr td.today.disabled:hover[disabled] {
    background-color:#fdf59a
}
.datetimepicker table tr td.today:active, .datetimepicker table tr td.today:hover:active, .datetimepicker table tr td.today.disabled:active, .datetimepicker table tr td.today.disabled:hover:active, .datetimepicker table tr td.today.active, .datetimepicker table tr td.today:hover.active, .datetimepicker table tr td.today.disabled.active, .datetimepicker table tr td.today.disabled:hover.active {
    background-color:#fbf069 \9
}
.datetimepicker table tr td.active, .datetimepicker table tr td.active:hover, .datetimepicker table tr td.active.disabled, .datetimepicker table tr td.active.disabled:hover {
    background-color:#006dcc;
    background-image:-moz-linear-gradient(top, #08c, #04c);
    background-image:-ms-linear-gradient(top, #08c, #04c);
    background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c));
    background-image:-webkit-linear-gradient(top, #08c, #04c);
    background-image:-o-linear-gradient(top, #08c, #04c);
    background-image:linear-gradient(top, #08c, #04c);
    background-repeat:repeat-x;
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
    border-color:#04c #0044cc #002a80;
    border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
    filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);
    color:#fff;
    text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25)
}
.datetimepicker table tr td.active:hover, .datetimepicker table tr td.active:hover:hover, .datetimepicker table tr td.active.disabled:hover, .datetimepicker table tr td.active.disabled:hover:hover, .datetimepicker table tr td.active:active, .datetimepicker table tr td.active:hover:active, .datetimepicker table tr td.active.disabled:active, .datetimepicker table tr td.active.disabled:hover:active, .datetimepicker table tr td.active.active, .datetimepicker table tr td.active:hover.active, .datetimepicker table tr td.active.disabled.active, .datetimepicker table tr td.active.disabled:hover.active, .datetimepicker table tr td.active.disabled, .datetimepicker table tr td.active:hover.disabled, .datetimepicker table tr td.active.disabled.disabled, .datetimepicker table tr td.active.disabled:hover.disabled, .datetimepicker table tr td.active[disabled], .datetimepicker table tr td.active:hover[disabled], .datetimepicker table tr td.active.disabled[disabled], .datetimepicker table tr td.active.disabled:hover[disabled] {
    background-color:#04c
}
.datetimepicker table tr td.active:active, .datetimepicker table tr td.active:hover:active, .datetimepicker table tr td.active.disabled:active, .datetimepicker table tr td.active.disabled:hover:active, .datetimepicker table tr td.active.active, .datetimepicker table tr td.active:hover.active, .datetimepicker table tr td.active.disabled.active, .datetimepicker table tr td.active.disabled:hover.active {
    background-color:#039 \9
}
.datetimepicker table tr td span {
    display:block;
    width:23%;
    height:54px;
    line-height:54px;
    float:left;
    margin:1%;
    cursor:pointer;
    -webkit-border-radius:4px;
    -moz-border-radius:4px;
    border-radius:4px
}
.datetimepicker span.hour {
    height:26px;
    line-height:26px
}
.datetimepicker .datetimepicker-hours table tr td span.hour_am, .datetimepicker .datetimepicker-hours table tr td span.hour_pm {
    width:14.6%
}
.datetimepicker .datetimepicker-hours fieldset legend, .datetimepicker .datetimepicker-minutes fieldset legend {
    margin-bottom:inherit;
    line-height:30px
}
.datetimepicker span.minute {
    height:26px;
    line-height:26px
}
.datetimepicker table tr td span:hover {
    background:#eee
}
.datetimepicker table tr td span.disabled, .datetimepicker table tr td span.disabled:hover {
    background:none;
    color:#999;
    cursor:default
}
.datetimepicker table tr td span.active, .datetimepicker table tr td span.active:hover, .datetimepicker table tr td span.active.disabled, .datetimepicker table tr td span.active.disabled:hover {
    background-color:#006dcc;
    background-image:-moz-linear-gradient(top, #08c, #04c);
    background-image:-ms-linear-gradient(top, #08c, #04c);
    background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c));
    background-image:-webkit-linear-gradient(top, #08c, #04c);
    background-image:-o-linear-gradient(top, #08c, #04c);
    background-image:linear-gradient(top, #08c, #04c);
    background-repeat:repeat-x;
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
    border-color:#04c #0044cc #002a80;
    border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
    filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);
    color:#fff;
    text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25)
}
.datetimepicker table tr td span.active:hover, .datetimepicker table tr td span.active:hover:hover, .datetimepicker table tr td span.active.disabled:hover, .datetimepicker table tr td span.active.disabled:hover:hover, .datetimepicker table tr td span.active:active, .datetimepicker table tr td span.active:hover:active, .datetimepicker table tr td span.active.disabled:active, .datetimepicker table tr td span.active.disabled:hover:active, .datetimepicker table tr td span.active.active, .datetimepicker table tr td span.active:hover.active, .datetimepicker table tr td span.active.disabled.active, .datetimepicker table tr td span.active.disabled:hover.active, .datetimepicker table tr td span.active.disabled, .datetimepicker table tr td span.active:hover.disabled, .datetimepicker table tr td span.active.disabled.disabled, .datetimepicker table tr td span.active.disabled:hover.disabled, .datetimepicker table tr td span.active[disabled], .datetimepicker table tr td span.active:hover[disabled], .datetimepicker table tr td span.active.disabled[disabled], .datetimepicker table tr td span.active.disabled:hover[disabled] {
    background-color:#04c
}
.datetimepicker table tr td span.active:active, .datetimepicker table tr td span.active:hover:active, .datetimepicker table tr td span.active.disabled:active, .datetimepicker table tr td span.active.disabled:hover:active, .datetimepicker table tr td span.active.active, .datetimepicker table tr td span.active:hover.active, .datetimepicker table tr td span.active.disabled.active, .datetimepicker table tr td span.active.disabled:hover.active {
    background-color:#039 \9
}
.datetimepicker table tr td span.past, .datetimepicker table tr td span.future {
    color:#999
}
.datetimepicker th.switch {
    width:145px
}
.datetimepicker thead tr:first-child th, .datetimepicker tfoot tr:first-child th {
    cursor:pointer
}
.datetimepicker thead tr:first-child th:hover, .datetimepicker tfoot tr:first-child th:hover {
    background:#eee
}
.input-append.date .add-on i, .input-prepend.date .add-on i {
    cursor:pointer;
    width:14px;
    height:14px
}