Я рекомендую вам создать правильное поле временной метки Firestore, которое будет использоваться в качестве ссылки, а не строковое поле, которое вы назвали «время».
С учетом сказанного, узнать временные метки Firestore может быть сложно, вот как вы можете использовать их.
Когда вы получаете метки времени из Firestore, они имеют следующий тип:
Чтобы преобразовать это в обычную метку времени вы можете использовать функцию .toDate ().
Например, для следующего документа:
Мы можно использовать что-то вроде:
db.collection('[COLLECTION]').doc('[DOCUMENT]').get().then(function(doc) {
console.log(doc.data().[FIELD].toDate());
});
, и результат будет примерно таким:
2019-12-16T16:27:33.031Z
Теперь, чтобы обработать эту временную метку, вы можете преобразовать ее в строку и использовать регулярное выражение для ее изменения в соответствии с вашими потребностями.
Например: (здесь я использую Node.js)
db.collection('[COLLECTION]').doc('[DOCUMENT]').get().then(function(doc) {
var stringified = doc.data().[FIELD].toDate().toISOString();
//console.log(stringified);
var split1 = stringified.split('T');
var date = split1[0].replace(/\-/g, ' ');
console.log(date);
var time = split1[1].split('.');
console.log(time[0]);
});
Вы получите следующий результат:
Теперь вы можете использовать подход orderby в самом запросе или после получения их в y наш интерфейс.
Пример orderby следующий:
db.collection('[COLLECTION]')
.orderBy("timeStamp", Query.Direction.ASCENDING)
Однако, если вы планируете продолжать использовать имеющийся у вас тип строки (не рекомендуется), вам придется преобразовать это строка к числовому c значению (возможно ASCII), чтобы иметь возможность правильно фильтровать это как объект времени.