【问题标题】:I need to count the number of days between date applied and the date of event [duplicate]我需要计算申请日期和事件日期之间的天数 [重复]
【发布时间】:2013-03-04 15:27:21
【问题描述】:

我们正在设计在线许可申请

我需要计算活动日期和申请日期之间的天数 活动日期为 9 月 16 日和 12 月 31 日。

Java 脚本来计算天数

【问题讨论】:

  • 请先查看this。你的问题是缺乏信息,没有细节,没有上下文..

标签: javascript date


【解决方案1】:

另一种方法是比较日期,直到它们相同。可能会慢很多,所以除非你想用额外的细节来扩展比较,否则不要使用它。

小提琴:http://jsfiddle.net/rudiedirkx/Szvfd/

Date.prototype.getYMD = function() {
    return this.getFullYear() + '-' + (this.getMonth()+1) + '-' + this.getDate();
};

Date.prototype.getDaysDiff = function(d2) {
    var d1 = this,
        delta = d1 < d2 ? +1 : -1;

    var days = 0;
    while (d1.getYMD() != d2.getYMD()) {
        days++;
        d1.setDate(d1.getDate() + delta);
    }
    return delta * days;
}

d1 = new Date('October 16 2012');
d2 = new Date('November 7 2012');

console.log(d1.getDaysDiff(d2)); // 22
console.log(d2.getDaysDiff(d1)); // -22

【讨论】:

    【解决方案2】:

    通过使用 Javascript 日期对象,您可以使用以下功能:

    var firstDate = new Date("October 16, 1975 11:13:00");
    var secondDate = new Date("October 14, 1975 11:13:00");
    
    
    function dateDifference(start, end)
    {
        return Math.round((start-end)/(1000*60*60*24));
    }
    
    alert(dateDifference(firstDate.getTime(), secondDate.getTime()));
    

    【讨论】:

    • 这没有考虑夏令时,尽管在这种情况下这不是问题。不过,您应该对结果进行舍入或取整。
    • getTime() 考虑夏令时,见JavaScript, time zones, and daylight savings time
    • 是的,但不是日期之间的差异。 start 可能带有夏令时,end 可能不带。所以你的结果可能是 19.04 或 18.96。这就是为什么你应该把它弄圆(而不是地板)。
    • 嗯,我无法重现逗号值,您能否在以下 jsFiddle 中提供示例日期:jsfiddle.net/yKwF8 ?
    • 老兄,你所要做的就是越过夏令时边界:jsfiddle.net/rudiedirkx/yKwF8/1 你住的地方有夏令时吗?否则,您将看不到小数点。
    猜你喜欢
    • 1970-01-01
    • 2013-11-29
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2019-02-10
    • 2014-07-08
    相关资源
    最近更新 更多