web-dev-qa-db-fra.com

AngularJS / javascript convertissant une date chaîne en objet date

Je suis coincé sur un problème et apprécierais toute aide. J'ai déjà lu beaucoup de discussions mais elles ne semblent pas fonctionner pour moi.

//I have a date as a string which I want to get to a date format of dd/MM/yyyy
var collectionDate = '2002-04-26T09:00:00'; 

//used angularjs date filter to format the date to dd/MM/yyyy
collectionDate = $filter('date')(collectionDate, 'dd/MM/yyyy'); //This outputs 26/04/2002 as a string

Comment puis-je le convertir en un objet de date? La raison pour laquelle je veux faire cela est parce que je veux l'utiliser dans une directive Google Maps où l'une des colonnes doit être une date. Je ne veux pas avoir le type de colonne sous forme de chaîne:

par exemple:

var data = new google.visualization.DataTable();
                    data.addColumn('date', 'Dates');
                    data.addColumn('number', 'Upper Normal');
                    data.addColumn('number', 'Result');
                    data.addColumn('number', 'Lower Normal');
                    data.addRows(scope.rows);.................
26
aliaz

C'est ce que j'ai fait sur le contrôleur

var collectionDate = '2002-04-26T09:00:00';
var date = new Date(collectionDate);
//then pushed all my data into an array $scope.rows which I then used in the directive

J'ai fini par formater la date à mon modèle souhaité sur la directive comme suit.

var data = new google.visualization.DataTable();
                    data.addColumn('date', 'Dates');
                    data.addColumn('number', 'Upper Normal');
                    data.addColumn('number', 'Result');
                    data.addColumn('number', 'Lower Normal');
                    data.addRows(scope.rows);
                    var formatDate = new google.visualization.DateFormat({pattern: "dd/MM/yyyy"});
                    formatDate.format(data, 0);
//set options for the line chart
var options = {'hAxis': format: 'dd/MM/yyyy'}

//Instantiate and draw the chart passing in options
var chart = new google.visualization.LineChart($Elm[0]);
                    chart.draw(data, options);

Cela m’a donné des dates au format jj/mm/aaaa (26/04/2002) sur l’axe des x du graphique.

6
aliaz

essaye ça

html

<div ng-controller="MyCtrl">
  Hello, {{newDate | date:'MM/dd/yyyy'}}!
</div>

[~ # ~] js [~ # ~]

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    var collectionDate = '2002-04-26T09:00:00'; 

    $scope.newDate =new Date(collectionDate);
}

démo

39
Jorge Casariego

Je sais que c'est en les réponses ci-dessus, mais ce que je veux dire, c'est que je pense que tous vous avez besoin de

new Date(collectionDate);

si votre objectif est de convertir une chaîne de date en une date (comme indiqué dans l'OP "Comment la convertir en un objet de date?").

9
Gary
//JS
//First Solution
moment(myDate)

//Second Solution
moment(myDate).format('YYYY-MM-DD HH:mm:ss')
//or
moment(myDate).format('YYYY-MM-DD')

//Third Solution
myDate = $filter('date')(myDate, "dd/MM/yyyy");
<!--HTML-->
<!-- First Solution -->
{{myDate  | date:'M/d/yyyy HH:mm:ss'}}
<!-- or -->
{{myDate  | date:'medium'}}

<!-- Second Solution -->
{{myDate}}

<!-- Third Solution -->
{{myDate}}
5
barış çıracı