Как объединить значения из DatePicker & Timepicker в одну переменную

У меня есть угловой пользовательский интерфейс приложения DatePicker & Timepicker, использующий angular-ui, когда пользователь выбирает дату $Scope.dt и установить время $Scope.mytime Я пытаюсь объединить в одном $Scope.SelectedDateTime я получаю NaN. Я не знаю как это исправить

обновлять, когда пользователь выбирает дату. Значение $ scope.dt будет "хорошо, когда пользователь выбирает дату, это будет" чт 05 марта 2015 г. 00:00:00 GMT-0500 (восточное стандартное время) и значение $scope.mytime 'чт чт 05 марта 2015 23:30:00 GMT-0500 (восточное стандартное время)'как объединить их в одну переменную html

      <h4>Popup</h4>
        <div class="row">
            <div class="col-md-6">
                <p class="input-group">
                  <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt" />
                  <span class="input-group-btn">
                    <button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
                  </span>
                </p>
            </div>
        </div>
    <timepicker ng-model="mytime" ng-change="changed()" hour-step="hstep" minute-step="mstep" show-meridian="ismeridian"></timepicker>
<button type="button" class="btn btn-sm btn-info" ng-click="SelectedDateTime()">Today</button>

Javascript

    $scope.today = function() {
      $scope.dt = new Date();
    };
    $scope.today();
    $Scope.mytime = new Date();
 $scope.changed = function () {
    $log.log('Time changed to: ' + $scope.mytime);
  };

  $scope.clear = function() {
    $scope.mytime = null;
  };
    $Scope.SelectedDateTime = function()
    {
      var SelectedDateTime = $scope.dt +''+$scope.mytime;
    }

2 ответа

Решение

Вы не можете объединять или пытаться добавить объекты даты, как если бы они были числами.

То, что вы в основном пытаетесь сделать, это

new Date() +" "+ new Date()

Вставьте эту строку в консоль браузера, и вы увидите что-то вроде:

"Thu Mar 05 2015 21:54:37 GMT-0500 (Eastern Standard Time) Thu Mar 05 2015 21:54:37 GMT-0500 (Eastern Standard Time)"

Вам нужно работать с ними как с объектами Date и использовать соответствующие методы-прототипы Date для манипулирования ими.

Вот некоторые из методов, которые вам понадобятся:

Date.prototype.getHours()
Date.prototype.setHours()

Выше предполагается, что вы на самом деле пытаетесь создать новый DateTime. Если нет, не ясно, каковы ваши ожидаемые результаты

Ссылка: MDN Date.prototype Документы

Я решил эту проблему, используя одну и ту же модель ng для Datepicker и Timepicker.

<input type="text" ng-model="myDateModel" datepicker-options="dateOptions" ... />

<uib-timepicker ng-model="myDateModel"...></uib-timepicker>

Надеюсь, это вам тоже поможет! Удачи!

Другие вопросы по тегам