javascript에서 Firebase fire store에 저장하기 위한 날짜를 타임스탬프로 변환
현재 사용 중입니다.Math.floor(Date.now() / 1000)
그러나 Firebase에서 문서에 추가할 올바른 타임스탬프 형식을 가져오려면 타임스탬프가 타임스탬프가 아닌 숫자로 삽입됩니다.
아래와 같이 (숫자가 아닌 타임스탬프로) 삽입했으면 합니다.
이것이 가능합니까?
다음 줄을 사용하면 됩니다.
var myTimestamp = firebase.firestore.Timestamp.fromDate(new Date());
.fromDate
는 Firebase의 정적 타임스탬프 클래스의 정적 메서드입니다.
참조: Firebase 타임스탬프 문서
업데이트:
클라우드 기능에 대해서는 JGuo의 의견을 참조하십시오.
클라우드 기능을 작성하는 경우,
admin.firestore.Timestamp.fromDate()
JGuo 1월 21일 1시 56분
Firestore에 필드를 타임스탬프로 저장하려면 필드 값으로 JavaScript Date 개체 또는 Firestore Timestamp 개체를 보내야 합니다.
날짜를 사용하려면 다음과 같이 하십시오.new Date(x)
어디에x
이전에 추가하려고 했던 값(밀리초)입니다.
타임스탬프를 사용하려면 더 많은 작업을 수행해야 합니다.x
문서에서 알 수 있듯이 생성자에게 전달하기 위해 초와 나노초의 조합으로 변환됩니다.
이것은 조금 오래되었지만 스벨테 프로젝트에서 어떻게 해야 하는지 알아보세요.저는 이것이 React 프로젝트에서도 작동할 것이라고 생각합니다(죄송하지만 Vue에 대해 잘 모릅니다).키커는 제가 웹 버전 9를 사용하고 있다는 것입니다.
import { Timestamp } from "@firebase/firestore";
let noteDate = Timestamp.fromDate(new Date());
문맥상으로만...이 새 노트 개체를 UI에 추가합니다.javascript 날짜일 때는 firebase에서 잘 작동했지만 UI 오류 없이 필수 .toDate()를 호출할 수 없었습니다.
<TimeAgo date={note.NoteDate.toDate()} />
그래서 이곳을 화재 기지로 만드는 것.타임스탬프는 자바스크립트 날짜 객체에서 .toDate를 호출할 때 UI 오류를 피하는 방법이었습니다.
다음을 사용하여 문제를 해결했습니다.
const created = firebase.firestore.Timestamp.fromDate(new Date()).toDate();
가져와야 합니다.firebase from 'firebase/app'
당신의 코드에 명시적으로.
import * as firebase from 'firebase/app'
다음 항목을 확인합니다.created
또는 유형에 있는 상수가 무엇이든.Date
실제로 소방서에 저장되기 전에.
제가 보기에 당신이 날짜를 추가하고 있는 것처럼 서버 타임스탬프를 사용하고 아래의 보안 규칙을 사용하여 시행하는 것이 더 나을 것입니다.
보안 규칙
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();
}
Firestore에 날짜/타임스탬프를 저장하려면 다음을 전송해야 합니다.Date
물건.
예를 들어, 기존 날짜의 경우 필드를 다음으로 설정합니다.new Date("December 10, 1815")
자세한 내용은 문서에서 확인할 수 있습니다.
가장 좋은 방법은 다음을 사용하는 것입니다.Timestamp
Firebase Firebase에서
const {Timestamp} = require("firebase/firestore");
그리고나서
Timestamp.fromDate(new Date())
여기서 게임에 늦었지만 OP의 질문을 읽으니 시간대 오프셋을 유지하는 것이 구체적으로 설명됩니다.타임스탬프에 오프셋이 없기 때문에 OP가 질문한 것처럼 솔직한 답변은 NO인 것 같습니다.
저는 지금 특정 '날'의 표현이 필요하지만 오프셋이 필요한 관련 상황이 있습니다.오프셋이 없는 경우를 제외하고 h/m/s에 대한 타임스탬프가 0인 것이 이상적입니다.오프셋을 저장하기 위해 두 번째 필드를 추가하거나 문자열과 같은 작업을 수행해야 합니다.
'20200125-360'
사용하다
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));
자세한 내용은 여기에서 날짜의 추가 옵션을 참조하십시오.
이 질문은 이미 여러 개의 답을 가지고 있지만, 단순성을 위해 제 방식으로 설명합니다.
코틀린 코드
val dateObject = Date()
val timestamp = Timestamp(dateObject)
사용할 때 적합한 솔루션을 찾았습니다.firebase.firestore.FieldValue.serverTimestamp
:
moment(createdAt.toDate().toISOString()).fromNow()
언급URL : https://stackoverflow.com/questions/53482750/convert-date-to-timestamp-for-storing-into-firebase-firestore-in-javascript
'programing' 카테고리의 다른 글
UITableViewCell의 배경색을 사용자 지정하는 방법은 무엇입니까? (0) | 2023.06.06 |
---|---|
Android View의 위쪽과 아래쪽에 테두리를 쉽게 추가할 수 있는 방법이 있습니까? (0) | 2023.06.06 |
python numpy ValueError: 피연산자를 셰이프와 함께 브로드캐스트할 수 없습니다. (0) | 2023.06.06 |
UITableView에서 데이터 요청이 완료되면 알림을 받으시겠습니까? (0) | 2023.06.06 |
조건에 따라 목록을 분할(분할, 분할)하려면 어떻게 해야 합니까? (0) | 2023.06.06 |