2016-03-31 8 views
0

Ich muss einen Zeitstempel in einer Tabelle angeben, die mit ng-repeat generiert wird. Eines der Felder in jedem Datensatz ist ein Zeitstempel, der als YYMMDDHHmmSS formatiert ist, dh die letzten beiden Ziffern des Jahres, zwei Ziffern für den Monat, zwei für den Tag, zwei für die Stunde usw. Beispiel: 160331124536 würde 31. März 2016 darstellen 12:45:36.Angularjs Filterzeitstempel INPUT-Format

fand ich einen Beitrag die folgende Syntax im HTML darauf hindeutet:

{{One_Record.Timestamp | date:'medium'}} 

Dies ersetzt die Ziffernfolge mit einem Datum-Zeit-String, aber das Datum und die Zeit ist völlig falsch.

Gibt es eine Möglichkeit, eckig zu sagen, was ist der Inhalt der empfangenen (ersten) Zeichenfolge, etwas wie YYMMDD ...?

Vielen Dank im Voraus.

+0

Ich denke, in diesem Fall müssen Sie Ihr eigenes filte schreiben r. –

Antwort

1

es ist nicht schön noch, aber das benutzerdefinierte Filter erhalten gehst du,

angular.module('yourAppName').filter('special', function() { 
    return function(input) { 
    var date = new String(input), 
     year = date[0] + date[1], 
     month = date[2] + date[3], 
     day = date[4] + date[5], 
     hour = date[6] + date[7], 
     minute = date[8] + date[9], 
     seconds = date[10] + date[11]; 

    var reformattedDate = '20' + year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + seconds; 

    var newDate = new Date(reformattedDate); 

    return newDate; 
    }; 
}); 

und dann einfach verwenden Es ist so,

{{ 160331124536 | special | date:'medium' }} 
+0

Danke @ZA. In der Tat, nicht schön (eigentlich ziemlich hässlich !!!), aber es sieht so aus, als würde es den Job erledigen. Teste es und lass es dich wissen. Danke für Ihren Vorschlag. – FDavidov

+0

wird es besser sein, wenn Sie das Datum, das Sie bekommen (Server-Seite), auf der Serverseite im Voraus formatieren. Frau arbeitet am besten. –

+0

Nun @ZA, Ihr Vorschlag funktioniert (machte eine kleine Änderung, obwohl der DB-Typ jetzt 4 Ziffern für das Jahr zurückgibt). Vielen Dank für Ihre Lösung !!! – FDavidov

0

Vielleicht ist es nicht genau das, was Sie wollen, aber in meinem Fall gelöst ich das Problem wie folgt aus:

HTML:

{{getDate(timestamp)}} 

JS:

$scope.getDate = function(timestamp) { 
    var date = new Date(timestamp*1000); 
    return date; 
}; 

ich ein gebrauchtes Funktion, die das Datum aus dem Zeitstempel zurückgegeben hat. Sie können das Datum auch neu formatieren oder auf diese Weise beispielsweise nur die Tage zurückgeben. Sehen Sie mehr über Javascript Datum Methods here

0

verwenden innerhalb ng-repeat

{{One_Record.Timestamp |date : 'dd/MM/yyyy HH:mm'}} 
+0

Nun .... Sie Lösung für die Eingabe = 20160331140437 (ja, fügte die beiden führenden Ziffern für das Jahr) gab mir: '09/11/2608 05: 59'. Nein, das richtige Datum und die richtige Uhrzeit. – FDavidov

+0

Dann zuerst müssen Sie Ihre Millisekunden in Datum-Objekt konvertieren, dann verwenden Sie diese –