【问题标题】:Calculate difference in days between a date pulled from an API and todays today计算从 API 中提取的日期与今天之间的天数差异
【发布时间】:2020-02-04 02:10:02
【问题描述】:

我目前正在尝试弄清楚如何计算从 API 中提取的日期与今天的日期之间的天数差异。

这是我用来以与 API 中的日期匹配的格式获取今天日期的代码:

var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();

today = dd + '/' + mm + '/' + yyyy;

这个树枝代码通过

拉取 API 的日期
{{ job.date }}

我需要努力去做和挣扎的是

today - {{ job.date }} = Difference in Days

我已经浏览了这里的文章,但我很难找到一篇我能理解的文章。

这可以用树枝做吗?

如果有人能帮我把 sn-p 放在一起,我们将不胜感激。

【问题讨论】:

  • 如果您从两者中创建Date 对象,您可以减去它们以获得以毫秒为单位的差异。现在除以24 * 3600 * 1000 得到天数。
  • @ChrisG:您可能还应该解决夏令时/夏令时的微妙问题。

标签: javascript jquery


【解决方案1】:

借助 this 发布的 jQuery 方法

//split
var todayArr = ('11/03/2019').split('/');
var startDateArr = ('10/03/2019').split('/');

//change format
var today = `${todayArr[2]}-${todayArr[1]}-${todayArr[0]}`
var startDate = `${startDateArr[2]}-${startDateArr[1]}-${startDateArr[0]}`

//calculate
var diff = new Date(Date.parse(today) - Date.parse(startDate));
var days = diff/1000/60/60/24;

console.log(days);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

    【解决方案2】:

    如果您来自 api 的日期是“dd/mm/yy”格式的“06/10/18”,那么

    let date = "06/10/18";
    let values = date.split("/");
    date = new Date("20"+values[2],values[1]-1,values[0]);//months are from  0 to 11
    let currDate = new Date();
    let diff = currDate.getTime() - date.getTime();
    diff = diff/1000; // seconds
    diff = diff/60; // minutes
    diff = diff/60; // hours
    diff = diff/24; //days
    
    let days = Math.round(diff);
    

    【讨论】:

    • 您应该round 而不是floor(或ceil),正如您在尝试使用 2019-03-11 和 2019-03-10 时看到的那样。夏令时/夏令时可能会打扰您。
    • 感谢@ScottSauyet 的建议
    【解决方案3】:

    你可以这样做......

    function countDays(firstDate, secondDate) {
    
        var startDay = new Date(firstDate);
        var endDay = new Date(secondDate);
        var millisecondsPerDay = 1000 * 60 * 60 * 24;
    
        var millisBetween = startDay.getTime() - endDay.getTime();
        var days = millisBetween / millisecondsPerDay;
    
        // Round down.
        alert(Math.floor(days));
    
    }
    

    【讨论】:

    • 您可以在此添加round,以便在夏令时/夏令时获得一致的答案。另请注意,millisBetween = startDay - endDay 将给您与在每个上调用 getTime() 相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2013-09-21
    • 2010-12-09
    • 1970-01-01
    • 2012-07-08
    • 2012-10-23
    • 2023-01-31
    相关资源
    最近更新 更多