현재 및 시간에 대한 Firebase TIMESTAMP
채팅 어플리케이션으로 파이어베이스를 사용하고 있습니다.채팅 오브젝트에 타임 스탬프를 추가하는 방법Firebase.ServerValue.TIMESTAMP방법.
이 타임 스탬프를 사용하여 채팅응용 프로그램에 메시지 수신 시간을 표시해야 합니다.
지금 시간이라면 시간만 보여주면 돼요.날짜와 시간 또는 날짜만 표시해야 하는 날짜 차이가 있습니다.
Firebase 타임 스탬프를 변환하기 위해 다음 코드를 사용했지만 실제 시간을 알 수 없습니다.
var timestamp = '1452488445471';
var myDate = new Date(timestamp*1000);
var formatedTime=myDate.toJSON();
이 문제에 대한 해결책을 제안해 주십시오.
A Timestamp는 오브젝트입니다.
timestamp = {
nanoseconds: 0,
seconds: 1562524200
}
console.log(new Date(timestamp.seconds*1000))
파이어베이스.Server Value.TIMESTAMP는 실제 타임스탬프가 아닙니다.TIMESTAMP를 어떤 변수로 설정한 경우 서버에서 실제 값으로 대체되는 상수입니다.
mySessionRef.update({ startedAt: Firebase.ServerValue.TIMESTAMP });
mySessionRef.on('value', function(snapshot){ console.log(snapshot.val()) })
//{startedAt: 1452508763895}
서버 시간을 얻으려면 다음 코드를 사용할 수 있습니다.
fb.ref("/.info/serverTimeOffset").on('value', function(offset) {
var offsetVal = offset.val() || 0;
var serverTime = Date.now() + offsetVal;
});
Firebase Functions 내부의 타임스탬프를 다음과 같이 변환합니다.
timestampObj.toDate()
timestampObj.toMillis().toString()
매뉴얼은 이쪽 https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp 에서 참조해 주세요.
사실, 사용해야만 효과가 있다.
firebase.database.ServerValue.TIMESTAMP
네임스페이스에 '데이터베이스'가 하나 더 있습니다.
Firebase Firestore와 동등한 제품을 찾는 사람들을 위해.그건…
firebase.firestore.FieldValue.serverTimestamp()
예.
firebase.firestore().collection("cities").add({
createdAt: firebase.firestore.FieldValue.serverTimestamp(),
name: "Tokyo",
country: "Japan"
})
.then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
console.error("Error adding document: ", error);
});
파이어베이스가 타임 스탬프를 주는 건 알아{seconds: '', and nanoseconds: ''}날짜로 변환하려면 다음 작업만 수행하면 됩니다.
- 하나의 변수 ex:- const 날짜에 파이어베이스 시간을 갖는다.
그리고 나서.date.toDate()=> 날짜를 반환합니다.
구글의 새로운 데이터베이스인 Firestore의 경우 다음 코드를 사용하면 이 문제를 쉽게 해결할 수 있습니다.
var admin = require("firebase-admin");
var serviceAccount = require("../admin-sdk.json"); // auto-generated file from Google firebase.
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
var db = admin.firestore();
console.log(admin.firestore.Timestamp.now().toDate());
새로운 버전의 Firebase 솔루션(2016년 1월 이후)
데이터베이스 업데이트에 타임스탬프를 첨부하는 적절한 방법은 요청에 플레이스홀더 값을 첨부하는 것입니다.다음 예에서는 Firebase가 다음 예제를 대체합니다.createdAt타임스탬프가 있는 속성:
firebaseRef = firebase.database().ref();
firebaseRef.set({
foo: "bar",
createdAt: firebase.database.ServerValue.TIMESTAMP
});
설명서에 따르면 가치는firebase.database.ServerValue.TIMESTAMP는 "현재 타임스탬프(유닉스 에폭 이후의 시간, 밀리초 단위)를 Firebase Database 서버에 의해 자동으로 입력하기 위한 플레이스 홀더 값입니다."
값이 아닌 경우 Firebase Timestamp 유형에서 JS 날짜로 변환하는 안전한 방법은 다음과 같습니다. Timestamp 메서드는 값을 그대로 반환합니다.
Angular 7/8/9에 대응
import firebase from 'firebase';
import Timestamp = firebase.firestore.Timestamp;
export function convertTimestampToDate(timestamp: Timestamp | any): Date | any {
return timestamp instanceof Timestamp
? new Timestamp(timestamp.seconds, timestamp.nanoseconds).toDate()
: timestamp;
}
이거 드셔보세요.
var timestamp = firebase.firestore.FieldValue.serverTimestamp()
var timestamp2 = new Date(timestamp.toDate()).toUTCString()
Firebase Firestone 18.0.1(com.google).파이어베이스타임스탬프)
val timestamp = (document.data["timestamp"] as Timestamp).toDate()
그것은 간단하다.이 함수를 사용하여 서버의 타임스탬프를 밀리초 단위로 한 번만 가져옵니다.
var getServerTime = function( cb ) {
this.db.ref( '.info/serverTimeOffset' ).once( 'value', function( snap ) {
var offset = snap.val();
// Get server time by milliseconds
cb( new Date().getTime() + offset );
});
};
이제 어디서든 사용할 수 있습니다.
getServerTime( function( now ) {
console.log( now );
});
왜 이런 식으로 쓰죠?
파이어베이스입니다. 파이어베이스. 해서 이렇게 쓸 수 요.estimatedServerTimeMs래래: :
var offsetRef = firebase.database().ref(".info/serverTimeOffset");
offsetRef.on("value", function(snap) {
var offset = snap.val();
var estimatedServerTimeMs = new Date().getTime() + offset;
});
firebase.database 동안.Server Value.TIMESTAMP는 훨씬 정확하며 대부분의 읽기/쓰기 작업에 적합합니다. Firebase Realtime Database 서버에 대한 클라이언트의 클럭 스큐를 추정하는 것이 유용할 수 있습니다./.info/serverTimeOffset 위치에 콜백을 부가하여 Firebase Realtime Database 클라이언트가 로컬 보고 시간(밀리초 단위)에 가산하는 값(밀리초 단위)을 얻을 수 있습니다.이 오프셋의 정확도는 네트워크 지연에 의해 영향을 받을 수 있기 때문에 클럭 시간의 큰 차이(1초 이상)를 검출하는 데 주로 도움이 됩니다.
https://firebase.google.com/docs/database/web/offline-capabilities
new Date(timestamp.toDate()).toUTCString()
import firebaseAPP from 'firebase/app';
public Date2firestoreTime(fromDate: Date) {
return firebaseAPP.firestore.Timestamp.fromDate(fromDate).toMillis()
}
public firestoreTime2Date(millisecDate: number) {
return firebaseAPP.firestore.Timestamp.fromMillis(millisecDate).toDate()
}
//usage:
let FSdatenow = this.Date2firestoreTime(new Date())
console.log('now to firestore TimeStamp', FSdatenow)
let JSdatenow = this.firestoreTime2Date(FSdatenow)
console.log('firestore TimeStamp to Date Obj', JSdatenow)
var date = new Date((1578316263249));//data[k].timestamp
console.log(date);
이것을 통해 반복하는 것이 나에게 효과가 있었던 정확한 코드이다.
querySnapshot.docs.forEach((e) => {
var readableDate = e.data().date.toDate();
console.log(readableDate);
}
이 기능은 timeStamp가 문자열이 아닌 정수일 때 작동합니다.
var timestamp = '1452488445471';
var myDate = new Date(parseInt(timestamp));
myDate.toDateString()
이 형식으로 변환했습니다.
let timestamp = '1452488445471';
let newDate = new Date(timestamp * 1000)
let Hours = newDate.getHours()
let Minutes = newDate.getMinutes()
const HourComplete = Hours + ':' + Minutes
let formatedTime = HourComplete
console.log(formatedTime)
let jsDate = new Date(date.seconds * 1000 + date.nanoseconds / 1000000);
해야 할 ..toDate()
import { Timestamp } from "firebase/firestore";
...
(dateVariable as unknown as Timestamp).toDate()
까지 ★★★★★★★★★★★★★★★★★★★였습니다..toDate()정상적으로 동작합니다.
★★★Firebase.ServerValue.TIMESTAMP아!
하려면 '타임스탬프'를 사용해야 .Firebase.database.ServerValue.TIMESTAMP
타임스탬프는 밀리초 단위로 되어 있습니다.밀리초를 단순한 날짜 형식으로 변환하려면
예: dd/MM/y HH:mm:ss
Java 에서는 다음 코드를 사용할 수 있습니다.
파이어베이스 데이터베이스에서 문자열 타임스탬프 값을 가져오려면
String x = dataSnapshot.getValue (String.class);
데이터는 현재 문자열에 포함되어 있습니다.은 할 수 있어요.string로로 합니다.long
long milliSeconds= Long.parseLong(x);
그런 다음 SimpleDateFormat을 만듭니다.
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
이제 밀리초의 타임스탬프를 ur sdf 형식으로 변환합니다.
String dateAsString = sdf.format (milliSeconds);
다음 .Date
date = sdf.parse (dateAsString);
이 코드는 나에게 효과가 있다.
<script src="https://www.gstatic.com/firebasejs/4.5.1/firebase.js"></script>
<script>
var config = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: ""
};
firebase.initializeApp(config);
var reff = firebase.database().ref('message');
reff.on('value',haveData, haveerr);
function haveData(datahave){
var existval= datahave.val();
var chabi=Object.keys(existval);
for(var d2=0;d2< chabi.length;d2++){
var r=chabi[d2];
var exitval=existval[r].Message;
var exitval1=existval[r].Name;
var exit=existval[r].Email;
var exitval2=existval[r].Subject;
var timestamp=existval[r].timestamp;
var sdate=new Date(timestamp);
var Year=sdate.getFullYear();
var month=sdate.getMonth()+1;
var day=sdate.getDate();
var hh=sdate.getHours();
var mm=sdate.getMinutes();
var ss=sdate.getSeconds();
}
}
function haveerr(e){
console.log(e);
}
</script>

Firebase.ServerValue.TIMESTAMP is is is is is와 new Date().getTime().
변환:
var timestamp = '1452488445471';
var myDate = new Date(timestamp).getTime();
언급URL : https://stackoverflow.com/questions/34718668/firebase-timestamp-to-date-and-time
'programing' 카테고리의 다른 글
| python에서 json 객체를 읽는 방법 (0) | 2023.03.04 |
|---|---|
| 스프링 프레임워크에서의 의존성 주입 및 제어 반전이란 무엇입니까? (0) | 2023.03.04 |
| Angular CLI를 사용하여 특정 폴더에 컴포넌트를 생성하는 방법 (0) | 2023.03.04 |
| Angular를 작성하려면HTML 콘텐츠가 포함된 JS UI 부트스트랩 팝오버? (0) | 2023.03.04 |
| 웹 서버를 시작하지 못했습니다.포트 8080은 이미 사용 중입니다.스프링 부트 마이크로 서비스 (0) | 2023.03.04 |