2017-03-21 3 views
0

In diesem Meteor Server Seitencode für die Benutzer Sammlungen, zeigt die Eigenschaft createdAt so etwas wie ISODate("2017-02-09T01:22:30.894Z").
Und in einer anderen Sammlung myCol habe ich die Eigenschaft createdAt mit dem Unix-Zeitstempel in Millisekunden. Moment.js ist installiert.
Wie kann ich die folgende Bedingung überprüfen:
myCol.createdAt ist nach n Monaten vom Ende des Monats, als der Benutzer erstellt wurde. thxZeit Arithmetik mit Moment

Antwort

1

Hier ist ein Ansatz, der (es gibt natürlich eine Handvoll andere Möglichkeiten, dies zu tun ... das war das erste, das in den Sinn kam) funktionieren sollte.

Sie können die Eigenschaft Benutzer createdAt in ein Momentobjekt wie dieses konvertieren (vorausgesetzt, Ihr Benutzerdokument ist in einer Variablen mit der Bezeichnung userOne gespeichert).

var moment1 = moment(userOne.createdAt);

Dann können Sie den Unix-Zeitstempel in der anderen Sammlung wie folgt umwandeln (das Dokument unter der Annahme, in einer var gespeichert heißt doc).

var moment2 = moment(doc.createdAt);

nun das Ende des Momentes für Zeitpunkt1 finden und in ‚N‘ Monate hinzuzufügen.

moment1.endOf('month').add(N, 'months');

Schließlich tun, um Ihren Vergleich.

moment2.isAfter(moment1);

0

Ich bin mir nicht sicher, wie man diese Zeichenfolge Darstellung der ISODate Objekt, vielleicht nur .toString().

Dies ist jedoch, wie Sie den Zeitunterschied in Monaten mit der myCol.createdAt erhalten durch das aktuelle Datum Date.now() erhalten können.

var isoString = "2017-02-09T01:22:30.894Z" 
 
var today = Date.now() 
 
console.log(moment(isoString).diff(today, 'months'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.0/moment.min.js"></script>