ReactJS: Firebase将日期排序为字符串



我在firebase中将DateFrom字段存储为字符串"dd/mm/YY"(即20/05/2022)

当我尝试排序这个时:

useEffect(() => {
const unsubscribe = firebase
.firestore() //access firestore
.collection("trips")
.where("User", "==", user1)
.orderBy("DateFrom", "asc")
.onSnapshot(snapshot => {
const listItemsTrips = snapshot.docs.map(doc => ({
id: doc.id,
...doc.data()
}));
setItems(listItemsTrips);
});
return () => unsubscribe();
}, []);
return items;

在大多数情况下返回正确的结果,但是分配给21/05/2023的任何内容仍然会出现在20/05/2022日期之后。如何按日期对字符串字段排序?(通过firebase控制台,对DateFrom字段进行排序也按此顺序显示)

它看起来只是按天排序&月和忽略年值?

您需要在firebase中将日期保存为时间戳。例子:

yourRef
.collection('you_colletcyion')
.add({DateFrom: firebase.Timestamp.now()})

const unsubscribe = firebase
.firestore() //access firestore
.collection("trips")
.where("User", "==", user1)
.orderBy("DateFrom", "asc")

然后你可以通过格式化来显示日期。moment.js:

示例
moment(user.DateFrom).locale('pt-br').format('LLL')

最新更新