不是预期的日期格式 - ng和日期输入类型之间的差异

时间:2016-03-04 11:38:02

标签: angularjs html5 forms

我在HTML5页面中有一个带有一些日期类型输入的表单,我想用Angular获取值。它采用screenshot所示的非预期格式。输入类型是日期而不是日期时间。

我测试发送此表单,我收到正确的预期日期,所以问题是如何在angulare中获得正确的日期?

感谢您的帮助!

以下是代码:

<fieldset>

               <div class="form-group">
                    <label for="start_date" class="col-sm-2 control-label">Date de début</label>
                    <div class="col-sm-10">
                       <input type="date" name="start_date" ng-model="start_date" class="form-control" required="required">
                    </div>
              </div> 

              <div class="form-group">
                    <label for="end_date" class="col-sm-2 control-label">Date de fin</label>
                    <div class="col-sm-10">
                       <input type="date" name="end_date" ng-model="end_date" class="form-control" required="required">
                    </div>
              </div>

              <div class="form-group">
                 <label for="input" class="col-sm-2 control-label">Type de contact:</label>
                 <div class="col-sm-2">
                    <select ng-model="type" id="input" class="form-control" required="required">
                       <option value="all">Tous</option>
                       <option value="fiche">Demande de renseignements ( DR )</option>
                       <option value="telephone">Demande de rappel</option>
                       <option value="contact">Général</option>
                    </select>
                 </div>
              </div>

              <div class="form-group">
                 <div class="col-sm-10 col-offset-2">
                    <button type="submit"  ng-click="getcontacts(start_date, end_date, type);" class="btn btn-primary">Lancer la recherche</button>
                 </div>
              </div>


              {{ start_date}} {{end_date}} {{ type }}

2 个答案:

答案 0 :(得分:0)

您输入的类型为&#34;日期&#34;,因此您的模型类型为日期。如果要获取日期的字符串表示形式,可以使用$ filter服务。像这样:

https://jsfiddle.net/relferreira/y7y5n62c/2/

angular.module('app', []);

angular.module('app')
    .controller('MainController', mainController);

mainController.$inject = ['$filter'];

function mainController($filter){

    var vm = this;

    vm.date = new Date();
    vm.formatedDate = '';
    vm.selectDate = selectDate;

  function selectDate(){
    vm.formatedDate = $filter('date')(vm.date);
  }

}

HTML:

<div data-ng-app="app">

  <div data-ng-controller="MainController as mainVm">
    <input type="date" data-ng-model="mainVm.date" />
    <button data-ng-click="mainVm.selectDate()">Select</button>
    {{mainVm.formatedDate}}
  </div>

</div>

答案 1 :(得分:0)

感谢Renan并发现我的问题最终与AngularJS - convert dates in controller

相同

在$ filter

中注入后,我在Controller中进行了以下转换

它充当魅力,再次感谢!

icademieApp.controller( 'contactsCtrl', ['$scope', '$filter', 'contactService',  function ($scope, $filter, contactService) {   

$scope.getcontacts = function ( start_date, end_date, type ){           

        console.log( start_date + ' & ' +  end_date  );

        start_date  = $filter('date')(start_date, "yyyy-MM-dd");
        end_date  = $filter('date')(end_date, "yyyy-MM-dd");

        console.log( start_date + ' & ' +  end_date  ); 

        ....        
}

}]);

第一次记录:

  

2016年3月1日星期二00:00:00 GMT + 0100(巴黎,马德里)&amp; 2016年3月4日星期五00:00:00 GMT + 0100(巴黎,马德里)

第二次记录:

  

2016-03-01&amp; 2016年3月4日