当前位置: 首页 > 知识库问答 >
问题:

倒数离约会还有几天?[重复]

养昊天
2023-03-14

我在JS中使用函数时遇到问题。我从这里得到了JS代码,这是JavaScript中两个日期在年、月、日之间的差异

月份工作得很好,但当我试着称之为“天”时,它似乎不工作,它会显示30天,而它应该是24天。有人看到代码有什么问题吗?

    function monthDiff(d1, d2) {
        var months;
        months = (d2.getFullYear() - d1.getFullYear()) * 12;
        months -= d1.getMonth() + 1;
        months += d2.getMonth();
        return months <= 0 ? 0 : months;
    }
    function daysInMonth(date) {
        return new Date(date.getYear(), date.getMonth() + 1, 0).getDate();
    }    
function diffDate(date1, date2) {
    if (date2 && date2.getTime() && !isNaN(date2.getTime())) {
        var months = monthDiff(d1, d2);
        var days = 0;

        if (date1.getUTCDate() >= date2.getUTCDate()) {
            days = date1.getUTCDate() - date2.getUTCDate();
        }
        else {
            months--;
            days = date1.getUTCDate() - date2.getUTCDate() + daysInMonth(date2);
        }

        // Use the variables months and days how you need them.
    }
}

下面是使用这些函数的var

var     months = monthDiff(new Date(), options.timestamp ) % 12 + 1,
        days = daysInMonth(new Date()),

共有3个答案

逑翰翮
2023-03-14

下面是一个函数,它将返回以年数、月数和天数表示的差值:

function dateDiff(d1, d2) {
    var years = 0, months = 0, days = 0, arr;
    if (d1 > d2) { // call inverse
        interval = dateDiff(d2, d1);
        return {
            years: -interval.years, 
            months: -interval.months, 
            days: -interval.days
        };
    }
    days = d2.getDate() - d1.getDate();
    if (days < 0) {
        months--;
        days+= new Date(new Date(d2).setDate(0)).getDate();
    }
    months += d2.getMonth() - d1.getMonth();
    if (months < 0) {
        years--;
        months+=12;
    }
    years += d2.getFullYear() - d1.getFullYear();
    return {
        years: years, 
        months: months,
        days: days
    };
}

// Sample data
var d1 = new Date('2013-10-20');
var d2 = new Date('2016-12-16')
// Call
var interval = dateDiff(d1, d2);
// Output each number separately
console.log('Years: ', interval.years);
console.log('Months: ', interval.months);
console.log('Days: ', interval.days);
云长恨
2023-03-14

不要再重新发明轮子了。

请稍等。js日期范围插件。

var starts = moment('2014-02-03 12:53:12');
var ends   = moment();

var duration = moment.duration(ends.diff(starts));

// with ###moment precise date range plugin###
// it will tell you the difference in human terms

var diff = moment.preciseDiff(starts, ends, true); 
// example: { "years": 2, "months": 7, "days": 0, "hours": 6, "minutes": 29, "seconds": 17, "firstDateWasLater":  false }


// or as string:
var diffHuman = moment.preciseDiff(starts, ends);
// example: 2 years 7 months 6 hours 29 minutes 17 seconds

document.getElementById('output1').innerHTML = JSON.stringify(diff)
document.getElementById('output2').innerHTML = diffHuman
<html>
<head>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

  <script src="https://raw.githubusercontent.com/codebox/moment-precise-range/master/moment-precise-range.js"></script>

</head>
<body>
  
  <h2>Difference between "NOW and 2014-02-03 12:53:12"</h2>
  <span id="output1"></span>
  <br />
  <span id="output2"></span>
  
</body>
</html>
郭博涉
2023-03-14

请尝试以下简短、简单且准确的代码:

var _MS_PER_DAY = 1000 * 60 * 60 * 24;

// a and b are javascript Date objects
var a = new Date("7/13/2010");
var b = new Date("12/15/2010");

function dateDiffInDays(a, b) {
  // Discard the time and time-zone information.
  var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
  var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());

  return Math.round((utc2 - utc1) / _MS_PER_DAY);
}
 类似资料:
  • 我想比较我的Android应用程序的两个日期,但我遇到了一个非常奇怪的问题。 例如: 如果我将过去的

  • 我最近在一次采访中被问到这个问题。 问题陈述:你有两次定期约会。每个约会都包含所需的开始时间、可选的结束时间和重复规则(必需)。下面列出了所有递归规则: 每日:示例:每2天 每周:示例:每3周在星期二 每月:示例:每2个月第17天/每月第三个星期二 每年:示例:每两年4月17日 你必须检查重叠2以上的事件。 我有一个解决日常复发的办法。 首次预约:开始时间:1/3/2018(dd/MM/YYYY)

  • 这应该是从pandas的文档中进行的简单查找,但我失败了。如何在pandas的 本来应该给我想要的结果,但现在我得到了时间,这意味着下面的计算结果总是:

  • 这是我尝试过的: 然而,我得到以下错误:

  • 我必须找出两个日期在月和天之间的区别。我尝试了谷歌,但我只发现了月份和日期的差异。 例如:2013年4月1日和2013年5月7日,那么结果应该是1个月6天。 我希望代码只使用Java6提供的api。推荐但不喜欢Joda Time和其他。谢谢你的帮助。

  • 我想创建一个闹钟,它会在预定义的时间每天响。我是否需要为每小时创建一个PendingIntent并将其添加到AlarmManager中,或者是否有更简单的方法来实现这一点?