Jquery 如何减去两个angularjs日期变量

Jquery 如何减去两个angularjs日期变量,jquery,angularjs,Jquery,Angularjs,我对angularjs还不太熟悉,但现在开始了。我可以通过angularjs以dd/mm/yyyy的形式记录两个日期,但我需要做的是以某种方式减去这两个日期,以获得两个日期之间的天数差。我创建了一个jquery函数来实现这一点,但我不知道如何将这两个日期传递给该函数。所以我想知道是否有不同的方法来解决这个问题 我正试图根据两个日期之间的天数来设置一个触发系统,以便对某些事情进行样式化。例如,如果在10天内,我希望它使用样式1,如果在20天内,我希望它使用样式2,等等。我也是angularjs新手

我对angularjs还不太熟悉,但现在开始了。我可以通过angularjs以
dd/mm/yyyy
的形式记录两个日期,但我需要做的是以某种方式减去这两个日期,以获得两个日期之间的天数差。我创建了一个jquery函数来实现这一点,但我不知道如何将这两个日期传递给该函数。所以我想知道是否有不同的方法来解决这个问题


我正试图根据两个日期之间的天数来设置一个触发系统,以便对某些事情进行样式化。例如,如果在10天内,我希望它使用样式1,如果在20天内,我希望它使用样式2,等等。

我也是angularjs新手,但你不想通过javascript视图模型提供属性来处理这个问题吗

例如,有一个基于日期字段更改的样式字段(如果差异为10天,则样式返回样式1),希望通过angularjs绑定,更新将传播到屏幕

我认为正确的术语是计算属性或计算属性

编辑

不确定这是否是您要查找的内容,但请参见fiddle,例如计算日期差异和更改样式,所有这些都基于视图模型(范围)的属性

scope.diff
scope.col
是要绑定到的两个属性

HTML

CSS

基本javascript方式:

var d1 = new Date('01/16/2013');
var d2 = new Date('02/26/2013');
var milliseconds = d2-d1;
var seconds = milliseconds / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
使用其中一个日期库(如moment.js):


您只需将日期转换为时间戳,然后减去

var Date1 = 08/16/2004;
var Date2= 10/24/2005;

var timestamp1 = new Date(Date1).getTime();
var timestamp2 = new Date(Date2).getTime();

var diff = timestamp1 - timestamp2


var newDate = new Date (diff);

这是可行的,这里有两个完美的javascript日期函数,你永远不应该没有

// Returns the days between a & b date objects...
function dateDiffInDays(a, b) {
    var _MS_PER_DAY = 1000 * 60 * 60 * 24;
    // 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.floor((utc2 - utc1) / _MS_PER_DAY);
}

// Calculate how many days between now and an event...
function daysTill(e) {
    var eventE = new Date(e);
    var today =  new Date();
    return dateDiffInDays(today, eventE);
}
您可以使用amDifference过滤器来计算差值:

以毫秒为单位获取两个日期之间的差异。参数为 日期、单位和使用精度。日期默认为当前日期。例如:

Difference:{{dateFrom | amDifference:dateTo:'days'}}days

我尝试了下面的一个,结果很好

var selecteddate = new Date($rootscope.selectvalue);
$scope.firstDate = selecteddate .getTime();
$scope.SecondDate = new Date().getTime();
所选日期是从日历中选择的日期,它来自父范围。第二个日期将是今天的日期。稍后,我将使用矩差来发现差异

var differenceinDays=parseInt(
      moment.duration(
        moment($scope.firstDate).diff(
          moment($scope.SecondDate)
        )
      ).asDays()
    );
我使用parseInt是因为我只想返回整数值

希望这能奏效


JavaScript库非常有用且易于使用的时刻:



asWeeks()
asMonths()
asYears()等,了解更多详细信息,请检查你的代码是什么样子的?对添加的两个答案有什么想法吗?我想真正的问题是如何计算天内的差异?@ChrisMoutray这是一个很好的示例,但如何为数组中的每个项目执行此操作?@vittore你的意思是你有一个类似TODO示例的对象列表吗angularjs网站主页?在这种情况下,我认为每个子对象都必须是一个范围对象
var newscope=$rootScope.$new()
然后你会对itRight使用$watch,但是我如何使用我创建的这个作用域访问这些作用域/make
ng repeat
?这会给出两个日期之间的天数,但不会给出时间范围扩展的确切天数。例如:d1=06/24/2015 2PM,d2=06/25/02/2015 2PM差值为2天时间范围所跨越的天数为3天这两个值是否相同取决于具体情况。我相信第二个更有趣的方法是如何使用这种方法来计算分钟数?它实际上是以毫秒(千分之一秒)为单位计算差值,然后将结果除以每天的毫秒数得到天数。因此,如果您想获得分钟数,您可以添加一个变量“除数”来替换它,并传递要除数ms,或者将_ms_/天更改为ms/分钟,或者=1000*60:)
var Date1 = 08/16/2004;
var Date2= 10/24/2005;

var timestamp1 = new Date(Date1).getTime();
var timestamp2 = new Date(Date2).getTime();

var diff = timestamp1 - timestamp2


var newDate = new Date (diff);
// Returns the days between a & b date objects...
function dateDiffInDays(a, b) {
    var _MS_PER_DAY = 1000 * 60 * 60 * 24;
    // 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.floor((utc2 - utc1) / _MS_PER_DAY);
}

// Calculate how many days between now and an event...
function daysTill(e) {
    var eventE = new Date(e);
    var today =  new Date();
    return dateDiffInDays(today, eventE);
}
<span>Difference: {{ dateFrom | amDifference : dateTo : 'days' }} days</span>
var selecteddate = new Date($rootscope.selectvalue);
$scope.firstDate = selecteddate .getTime();
$scope.SecondDate = new Date().getTime();
var differenceinDays=parseInt(
      moment.duration(
        moment($scope.firstDate).diff(
          moment($scope.SecondDate)
        )
      ).asDays()
    );
var parsedServerOutTime = moment(serverOutTime, "HH:mm:ss");
var parsedServerInTime = moment(serverInTime, "HH:mm:ss");

var milliseconds= parsedServerOutTime.diff(parsedServerInTime) //default milliseconds
var days = moment.duration(parsedServerOutTime .diff(parsedServerInTime )).asDays();// For days