将Date和Time输入字符串组合为Date对象

Ani*_*nha 5 javascript datetime angularjs

我有两个输入标签,用于从用户中选择日期和时间.

<p>Start Date</p><p> <input ng-model="sdate" type="date" ></p>
<p>Start Time</p><p> <input ng-model="stime" type="time" ></p>
Run Code Online (Sandbox Code Playgroud)

这两个值传递给我想要将这两个输入值组合为一个Date对象的函数:

 new Date(y, m, d, hh, mm, a)
Run Code Online (Sandbox Code Playgroud)

然后我可以使用它在日历中绘制事件的详细信息.我如何结合这两个值?我试过了:

start:new Date(sdate + stime)


start:new Date(sdate , stime)


start: new Date(sdate.getFullYear() + sdate.getMonth() + sdate.getDate() + stime.getHours + stime.getMinutes())
Run Code Online (Sandbox Code Playgroud)

但我所尝试的一切都没有奏效.

使用AngularJS时如何实现这一目标?

Die*_*erg 6

在角度,它会像这样:

控制器:

function exampleController($scope) {
    $scope.title = "$Watch sample";   

    $scope.$watch('sdate', function() {
       tryCombineDateTime(); 
    });

    $scope.$watch('stime', function() {
       tryCombineDateTime();
    });

    function tryCombineDateTime() {
        if($scope.sdate && $scope.stime) {
            var dateParts = $scope.sdate.split('-');
            var timeParts = $scope.stime.split(':');

            if(dateParts && timeParts) {
                dateParts[1] -= 1;
                $scope.fullDate = new Date(Date.UTC.apply(undefined,dateParts.concat(timeParts))).toISOString();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

HTML

<div ng-app ng-controller="exampleController">
    <h2>{{title}}</h2>
    <p>Start Date</p><p> <input ng-model="sdate" type="date" ></p>
    <p>Start Time</p><p> <input ng-model="stime" type="time" ></p>

    {{fullDate}}
</div>
Run Code Online (Sandbox Code Playgroud)

你需要在变量上使用$ watch监听器,然后调用你的函数.

注意:如果您为此制定指令会更好.

FIDLE

  • 不工作,得到错误,拆分不是一个功能 (3认同)
  • 不要忘记使用"日期"时月份为零,因此您需要减去1或月份不正确. (2认同)