Как добавить количество дней к отметке времени? - PullRequest
0 голосов
/ 02 июня 2019

У меня были метка времени и начальная дата начала (продолжительности (количество дней)), мне нужно получить дату окончания, я устал, этот код дает неправильную метку времени даты окончания

exports.terminateStoreAd = functions.https.onRequest(async(req, res) => {
        try {
            const snapshot =await admin.database().ref("StoreAds").once("value");
            if (snapshot.exists()) {
                snapshot.forEach(snapData => {
                    if (snapData.exists()) {
                        const endDate=new Date(snapData.val().startDate).getTime()+(snapData.val().duration*24*60*60*1000);
                        res.send(""+endDate);
                    }
                });
                res.send("done")
            }
        } catch (error) {
            console.log("terminateStoreAd error :" + error.message); 
        }
    });

моя начальная дата: 1559449773

продолжительность: 5

дата окончания: 1991449773: (

спасибо заранее.

Ответы [ 3 ]

0 голосов
/ 02 июня 2019
const endDate = snapData.val().startDate + snapData.val().duration*24*60*60*1000;

достаточно для получения необходимой даты в миллисекундах (если startDate в миллисекундах)

Иначе, если startDate - строка даты,

const endDate = (new Date(snapData.val().startDate)).getTime() + snapData.val().duration*24*60*60*1000;

Предположим, вам требуется endDate в миллисекундах.

0 голосов
/ 03 июня 2019

наконец я получил решение

exports.terminateStoreAd = functions.https.onRequest(async(req, res) => {
try {
    const snapshot =await admin.database().ref("StoreAds").once("value");
    const promises = [];
    if (snapshot.exists()) {
        snapshot.forEach(childSnapshot => {
            const endDate=childSnapshot.val().startDate + childSnapshot.val().duration  * 86400;
            const today=Math.round(new Date().getTime()/1000);
            if (endDate <= today) {
                promises.push(
                    admin.database().ref("StoreAdsHistory").child(childSnapshot.key).set(childSnapshot.val()),
                    childSnapshot.ref.remove(),
                    res.send()
                );
            }
        });
       } 
       await Promise.all(promises);
    }catch (error) {

}

});

0 голосов
/ 02 июня 2019

Если дата начала 2019-05-01, то через 5 дней это просто вопрос создания новой даты с использованием параметризованной версии.

Обратите внимание, что месяц индексирован нулями, поэтому май 5-й месяц - индекс 4Так как я хочу 5 дней после 1 мая, я использую 1+5 в качестве дня:

const startDate = new Date(2019, 4, 1);
const endDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()+5);

console.log(`Start Date: ${startDate}, End Date: ${endDate}`);
console.log(`Start Date: ${startDate.valueOf()}, End Date: ${endDate.valueOf()}`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...