Как вычесть дату из admin.firestore.FieldValue.serverTimestamp()
?
Скажем, я хочу знать дату 5 месяцев назад.
Используя new Date()
объект new Date()
Javascript, я получаю дату в миллисекундах.
Я хотел бы сохранить его, но как временную метку в моей Firestore Database. Как я могу это сделать?
ОБНОВЛЕНИЕ:
Я использую эту функцию для обнаружения даты:
function findBirthdate(age){
var monthsAgo;
switch(age){
case "_6months":
monthsAgo = 3;
break;
case "6_12months":
monthsAgo = 9;
break;
case "12_18months":
monthsAgo = 15;
break;
case "18_24months":
monthsAgo = 21;
break;
case "24_months":
monthsAgo = 28;
break;
default:
return;
}
var now = new Date();
return now.setMonth(now.getMonth() - monthsAgo);
}
Итак, я называю var birth = findBirthdate(age)
и отправляю birth
в Firestore, как в
admin.firestore()....update({ birthdate: birth }).then(...
Когда я делаю
var date = new Date();
date.setMonth(date.getMonth() - 3);
console.log(date);
Он печатает
Вт 17 апр 2018 21:11:19 GMT-0700 (Pacific Daylight Time)
Разница в том, что вы возвращаете результат из setMonth
, который является результирующей меткой времени. Из документации MDN на setMonth()
:
Возвраты: количество миллисекунд между 1 января 1970 года 00:00:00 UTC и обновленная дата.
Поскольку вы хотите вернуть фактическую дату, вам нужно будет:
var now = new Date();
now.setMonth(now.getMonth() - monthsAgo);
return now;
Date
вы передаете, это должно быть так же просто, как stackoverflow.com/questions/7937233/…serverTimestamp
она довольно красива в консоли Firestore (так что я могу менять дни, месяцы и т. Д. С помощью мини-календаря, и данные, как говорят, имеют тип timestamp). Когда я использую метод, который вы предложили (и о котором я говорил в моем вопросе как об использовании стандартного объектаDate
, я скорее получаю1508193230712
в качестве Date, который я мог бы также использовать в своем клиентском коде без проблем. Это не так. хорошо, хотя для манипуляций в консоли Firebase. Есть предложения тогда?