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