web-dev-qa-db-ja.com

javascriptでfirebase firestoreに保存するために日付をタイムスタンプに変換します

現在、Math.floor(Date.now() / 1000)を使用してFirebaseのドキュメントに追加する正しいタイムスタンプ形式を取得していますが、タイムスタンプはタイムスタンプとしてではなく、数字として挿入されます。

number

以下に示すように(数字ではなくタイムスタンプとして)挿入します。

enter image description here

これは可能ですか?

8
Arjen de Jong

単純に次の行を使用できます。

var myFirebaseFirestoreTimestampFromDate = firebase.firestore.Timestamp.fromDate(new Date());

.fromDatestaticメソッドfromstatic Timestamp classfromFirebase

参照: Firebase Timestamp Doc

23
Sean Stayn

Firestoreにタイムスタンプとしてフィールドを保存する場合は、フィールドの値としてJavaScript Date オブジェクトまたはFirestore Timestamp オブジェクトを送信する必要があります。

日付を使用する場合は、単にnew Date(x)と言います。ここで、xは、以前に追加しようとしていたミリ秒単位の値です。

タイムスタンプを使用する場合は、ドキュメントに示されているように、xを秒とナノ秒の組み合わせに変換してコンストラクターに渡すためにさらに作業を行う必要があります。

5
Doug Stevenson

私はあなたが追加された日付をやっていることがわかるように、サーバータイムスタンプを使用し、それを強制するために以下のセキュリティルールを使用する方が良いでしょう。

セキュリティ規則

allow create: if request.resource.data.date_added == request.time && 
              // other rules for the message body

クライアント側のJSコード

const message = {
    date_added: firebase.firestore.FieldValue.serverTimestamp();
}
3
Jack Woodward

Firestoreに日付/タイムスタンプを保存するには、Dateオブジェクトを送信する必要があります。

たとえば、既存の日付を使用して、フィールドをnew Date("December 10, 1815")に設定します

詳細情報が利用可能です ドキュメントで

2
JakeSteam

つかいます

 let lang = 'en-US' // you may use user's computer language: navigator.language || navigator.userLanguage
 let d = new Date(date);
 let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour:"numeric", timeZone:'short' };
 firebase.database().ref('/thePathYouLikeToSave/date_added').set(d.toLocaleDateString(lang, options));

日付のその他のオプション ここで完全な詳細

0
HakanC

Swift 4および5

タイムスタンプの日付の変換

let timestampFromDate = Timestamp(date: Date())
print(timestampFromDate)
0
Akbar Khan