Javascript 如何在时间戳中添加天数?

Javascript 如何在时间戳中添加天数?,javascript,typescript,google-cloud-functions,Javascript,Typescript,Google Cloud Functions,我有一个开始日期时间戳和一个持续时间(天数),我需要得到结束日期,我厌倦了这段代码给我一个错误的结束日期时间戳 exports.terminateStoreAd = functions.https.onRequest(async(req, res) => { try { const snapshot =await admin.database().ref("StoreAds").once("value"); if (snaps

我有一个开始日期时间戳和一个持续时间(天数),我需要得到结束日期,我厌倦了这段代码给我一个错误的结束日期时间戳

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:(


提前感谢。

假设开始日期为2019-05-01,那么5天后就可以使用参数化版本创建新日期了

注:本月指数为零,因此5月,第5个月指数为4。由于我希望5月1日后5天,因此我使用
1+5
作为日期:

const startDate=新日期(2019年4月1日);
const endDate=新日期(startDate.getFullYear()、startDate.getMonth()、startDate.getDate()+5);
log(`Start Date:${startDate},End Date:${endDate}`);
log(`Start Date:${startDate.valueOf()},End Date:${endDate.valueOf()}`);
足够以毫秒为单位获取所需日期(如果
startDate
以毫秒为单位)

否则,如果
startDate
是日期字符串

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

假设您需要以毫秒为单位的
endDate

最终我得到了解决方案

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) {

}
exports.terminateStoreAd=functions.https.onRequest(异步(req,res)=>{
试一试{
const snapshot=await admin.database().ref(“StoreAds”).once(“value”);
常量承诺=[];
if(snapshot.exists()){
snapshot.forEach(childSnapshot=>{
const endDate=childSnapshot.val().startDate+childSnapshot.val().duration*86400;
const today=Math.round(new Date().getTime()/1000);

如果(endDate)结束日期应该是什么?你确定你从duration中得到了期望值吗?@Doug Stevenson duration的期望值是错误的,经过2天的搜索,我发现等式是错误的,正确的是:const endDate=childSnapshot.val().startDate+childSnapshot.val().duration*86400;
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) {

}