AngularJS. Tagwaarde converteren (Unix-tijd naar door mensen leesbare tijd)

Ik haal gegevens uit een database en geef deze weer:

   <ul>
       <li ng-repeat="item in items>
          <mydate>{{item.date}}</mydate>
        </li>
    </ul>

Waar {{item.date}}een Unix-datum is, zoals 1374843600. Hoe kan ik het datumformaat instellen met behulp van AngularJS-richtlijnen? Is het mogelijk?

Toen ik het probeerde, kreeg ik een waarde van tag mydate –{{item.date}}


Antwoord 1, autoriteit 100%

Ik heb het probleem ondervonden met een unix-tijd die is geformatteerd als een aantal secondenvanaf het begin van het tijdperk of als een aantal millisecondendat wordt gebruikt in JavaScript. Dus strikt genomen converteert AngularJS geen Unix-tijdstempel naar Datum, maar een getal met milliseconden, dat 1000 keer groter is, dus eerst moet je je invoernummer met 1000 vermenigvuldigen, zoals dit:

<mydate>{{item.date * 1000 | date:'yyyy-MM-dd HH:mm:ss Z'}}</mydate>

Anders klopt je date niet.


Antwoord 2, autoriteit 41%

Gebruik de indeling date filterals volgt:

<mydate>{{item.date * 1000 | date:'yyyy-MM-dd HH:mm:ss Z'}}</mydate>

Referentie


Antwoord 3, autoriteit 2%

Als je een Unix-tijdstempel hebt, moet je je tijdstempel waarschijnlijk met 1000 vermenigvuldigen, aangezien de Unix-tijdstempel in seconden is en het AngularJs-datumfilter milliseconden nodig heeft.

vm.milliseconds = Date('1441981121' * 1000);

gebruik dan de $filter() functie

var date = $filter('date')(vm.milliseconds, 'd MMMM yyyy');

of je kunt het gebruiken in ng-bind

<span ng-bind="myController.milliseconds | date : 'd MMMM yyyy'"></span>

Antwoord 4

U moet het datumfilter gebruiken dat al door angular wordt geleverd:
hier


Antwoord 5

yourapp.filter('timestampToDate', function () {
    return function (timestamp) {
        var date = new Date(timestamp * 1000);
        var dateObject = date.getFullYear() +'/'+ ('0' + (date.getMonth() + 1)).slice(-2) +'/'+ ('0' + date.getDate()).slice(-2);
        return dateObject;
    };
});

Gebruik:
{{timestamp | timestampToDate}}


Antwoord 6

Er is een richtlijn voor die rsTime wordt genoemd.

   <rs-time start-time="1478513323" digital-format="'ddd MMM d h:mm TT'"></rs-time>

Bekijk de demo op Plunker.

Hieronder staan ​​verschillende tijdsformaten:

M/d/y -  11/7/2016
 HH:mm:ss - 16:02:31 (24hrs formate)
 hh:mm:ss TT - 04:03:10 PM
 ddd MMM d h:mm TT  - Mon Nov 7 at 4:04 PM

Ga voor documentatie naar Github

Other episodes