Ich versuche, das folgende Datum in ein Javascript Date () -Objekt zu konvertieren. Wenn ich es vom Server zurück bekomme, ist es ein Zeitstempelobjekt.
Screenshot von der Firebase Firestore-Konsole:
Wenn ich Folgendes in einer Liste von Objekten versuche, die vom Firestore zurückgegeben wurden:
list.forEach(a => {
var d = a.record.dateCreated;
console.log(d, new Date(d), Date(d))
})
Es ist klar, dass die Zeitstempel alle unterschiedlich sind und nicht alle das gleiche Datum vom 9. September 2018 haben (was zufällig heute ist). Ich bin mir auch nicht sicher, warum dies new Date(Timestamp)
zu einem führt invalid date
. Ich bin ein bisschen ein JS-Neuling. Mache ich etwas falsch mit den Daten oder Zeitstempeln?
quelle
...toDate() is not a function
.Bitte verwenden Sie die toDate () -Methode und konvertieren Sie sie dann mit einem Winkelrohr wie diesem in das Format.
{{row.orderDate.toDate () | Datum: 'dd MMM hh: mm'}}
quelle
Sie können die Funktion toDate () zusammen mit toDateString () verwenden, um nur den Datumsteil anzuzeigen.
const date = dateCreated.toDate().toDateString() //Example: Friday Nov 27 2017
Angenommen, Sie möchten nur den Zeitteil und verwenden dann toLocaleTimeString ()
const time = dateCreated.toDate().toLocaleTimeString('en-US') //Example: 01:10:18 AM, the locale part 'en-US' is optional
quelle
Sie können
Timestamp.fromDate
und.toDate
zum Konvertieren hin und her verwenden.// Date to Timestamp const t = firebase.firestore.Timestamp.fromDate(new Date()); // Timestamp to Date const d = t.toDate();
quelle
So konvertieren Sie den Unix-Zeitstempel in ein JavaScript-Datumsobjekt.
var myDate = a.record.dateCreated; new Date(myDate._seconds * 1000); // access the '_seconds' attribute within the timestamp object
quelle
const timeStampDate = record.createdAt; const dateInMillis = timeStampDate._seconds * 1000 var date = new Date(dateInMillis).toDateString() + ' at ' + new Date(dateInMillis).toLocaleTimeString()
OutPut-Beispiel:
Sat 11 Jul 2020 at 21:21:10
quelle
Endlich konnte ich bekommen, was ich brauchte. Dies gibt das Datum als zurück
08/04/2020
new Date(firebase.firestore.Timestamp.now().seconds*1000).toLocaleDateString()
quelle
Das funktioniert bei mir.
new Date(firebaseDate.toDate())
quelle
Das funktioniert bei mir
let val = firebase.timestamp // as received from the database, the timestamp always comes in an object similar to this - {_nanoseconds: 488484, _seconds: 1635367} (new Date( (val.time._seconds + val.time._nanoseconds * 10 ** -9) * 1000)).toString().substring(17, 21)
quelle
Dies könnte helfen:
new Date(firebaseDate._seconds * 1000).toUTCString()
quelle
Ich hatte das gleiche Problem. Und ich habe es so herausgefunden:
const createdAt = firebase.firestore.Timestamp.fromDate(new Date()); // then using dayjs library you can display your date as you want. const formatDate = dayjs.unix(createdAt.seconds).format('YYYY-MM-DD');
Die Ausgabe sollte wie z
2020-08-04
quelle
Das Zeitstempelobjekt, das Sie vom Firestore erhalten, verfügt über eine
toDate()
Methode, die Sie verwenden können.list.forEach(a => { var d = a.record.dateCreated; console.log(d.toDate()) })
Hier ist ein Zitat aus Firebase-Dokumenten über die
toDate()
Methode[https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp#todate]
quelle
Wenn Sie die Millisekunden nicht verlieren möchten, können Sie Folgendes tun:
var myDate = a.record.dateCreated; new Date((myDate.seconds + myDate.nanoseconds * 10 ** -9) * 1000);
quelle