0

我正在尝试组合 Datepicker 和 Timepicker 指令以在组合的 Date 对象中从第一个获取日期和从第二个获取时间。我遇到了一些不使用这些指令的示例,例如Combining Date and Time input strings as a Date object。但是,当我尝试应用与我的案例类似的东西时,它不起作用。控制台返回“TypeError:$scope.dt.split 不是函数”。以上是我尝试使用的由 $watch 调用的函数。

function tryCombineDateTime() {
    if ($scope.dt && $scope.mytime) {
        var dateParts = $scope.dt.split('-');
        var timeParts = $scope.mytime.split(':');
        if (dateParts && timeParts) {
            dateParts[1] -= 1;
            $scope.fullDate = new Date(Date.UTC.apply(undefined, dateParts.concat(timeParts))).toISOString();
        }
    }
}

这是一个显示问题的plunker。http://plnkr.co/edit/tnbE3LWQTTzLhLWXLCQB?p=preview

我更喜欢基于我的 Plunker 的解决方案,因为我不想安装 DateTimePicker 等其他组件。

4

2 回答 2

1

日期格式已更改,因此抛出异常,试试这个

  function tryCombineDateTime() {
    if ($scope.dt && $scope.mytime) {
      var date = $scope.dt.toString();
      var time = $scope.mytime.toString();
      var dateParts = date.split(' ');
      var timeParts = time.split(' ');
      if (dateParts && timeParts) {
        dateParts[4] = timeParts[4]
        $scope.fullDate = new Date(dateParts.join(' ')).toISOString();
      }
    }
  }
于 2016-02-15T14:27:02.153 回答
1

你的 tryCombineDateTime 函数应该是这样的:

  function tryCombineDateTime() {
    if ($scope.dt && $scope.mytime) {
        $scope.fullDate =new Date($scope.dt.getFullYear(), $scope.dt.getMonth(), $scope.dt.getDate(),$scope.mytime.getHours(),$scope.mytime.getMinutes()).toISOString();
    }
  }

这是一个从你的 plunker 分叉的工作演示

于 2016-02-15T14:44:52.383 回答