首页 > 解决方案 > 在两个日期之间获得每日价格上涨的 Javascript 是什么?

问题描述

我已经搜索了一段时间,甚至找不到任何涉及这个主题的人。

在 4 月 1 日和 8 月 1 日之间,我的 900 美元价格慢慢接近 1500 美元。这大约是每天 5 美元,公式为:

ROUND(1500 - (600 * ((截止日期 - 今天) / (截止日期 - 开始)))

但是我如何用 javascript 和 HTML 来表达它,以便我可以用“今天你必须支付 920 美元”这样的句子来写出来。

这是我目前所处的位置,但我无法弄清楚如何将今天的日期归零以实现正确的计算:

<div id="foo"></div>


  <script type="text/javascript">

      function getDayDiff(a, b) {
        return (a - b) / 8.64e7;
    }

    function getPayAmount(DEADLINE, TODAY, START) {
        return Math.round(1500 - (600 * getDayDiff(DEADLINE, TODAY) / getDayDiff(DEADLINE, START)));
    }
    
 document.getElementById("foo").innerHTML = "Today you'll have to pay $"  + getPayAmount(new Date(2021, 08, 1), new Date(), new Date(2021, 4, 1));
    </script>  

标签: javascriptarraysfunctiondatemath

解决方案


首先计算days(从unix时间开始),使用getTime()(将给出毫秒)并使用相同的公式。

const days = (date) => Math.ceil(date.getTime() / (24 * 60 * 60 * 1000));

const DEADLINE = days(new Date("2021-08-01"));
const START = days(new Date("2021-04-01"));
const TODAY = days(new Date());

const res = Math.round(1500 - 600 * ((DEADLINE - TODAY) / (DEADLINE - START)));

console.log(res);

document.querySelector('.adbox.adred').append(`Today's Rate ${res}`)


推荐阅读