我对angularjs相当陌生,但是这里就是这样。我可以通过形式为dd/mm/yyyy
的angularjs实现两个日期,但我需要做的是以某种方式减去两个日期以获得两者之间的差异。我创建了一个jquery函数来做到这一点,但我不知道如何将这两个日期传递给函数。所以我想知道是否有不同的方式去做这件事?如何减去两个angularjs日期变量
我想建立一个触发系统,取决于两个日期之间的某些事情要被程式化的天数。例如,如果它在10天内,我希望它使用风格1,如果它在20天内使用风格2等。
我对angularjs相当陌生,但是这里就是这样。我可以通过形式为dd/mm/yyyy
的angularjs实现两个日期,但我需要做的是以某种方式减去两个日期以获得两者之间的差异。我创建了一个jquery函数来做到这一点,但我不知道如何将这两个日期传递给函数。所以我想知道是否有不同的方式去做这件事?如何减去两个angularjs日期变量
我想建立一个触发系统,取决于两个日期之间的某些事情要被程式化的天数。例如,如果它在10天内,我希望它使用风格1,如果它在20天内使用风格2等。
我也是一个angularjs新手,但不会通过使你的javascript视图模型可用的属性来处理这个问题吗?
例如有一个风格根据日期字段而变化(即风格返回样式1,如果差异是10天),并希望通过angularjs绑定更新将传播到屏幕。
我觉得这个正确的术语是计算财产或计算财产
编辑
不知道这是你在找什么,但看到小提琴例如计算日期差异并更改所有基于视图模型的属性(范围)的样式
scope.diff
和scope.col
是b属性的2个属性IND到
http://jsfiddle.net/chrismoutray/wfjv6/
HTML
<script src="http://code.angularjs.org/0.10.4/angular-0.10.4.min.js" ng:autobind></script>
<div ng:controller="ComputedPropertiesCtrl">
first date <input ng:model="firstdate"> second date <input ng:model="seconddate"> difference {{diff}}
<div>when the difference is greater than 10 color changes to green</div>
<div>eg set the second date to 15/01/2013</div>
<div style="background-color:{{col}};"> State </div>
</div>
JS
function ComputedPropertiesCtrl() {
var scope = this;
scope.firstdate = '01/01/2013';
scope.seconddate = '10/01/2013';
scope.data_before = [];
scope.differenceInDays = function() {
var dt1 = scope.firstdate.split('/'),
dt2 = scope.seconddate.split('/'),
one = new Date(dt1[2], dt1[1]-1, dt1[0]),
two = new Date(dt2[2], dt2[1]-1, dt2[0]);
var millisecondsPerDay = 1000 * 60 * 60 * 24;
var millisBetween = two.getTime() - one.getTime();
var days = millisBetween/millisecondsPerDay;
return Math.floor(days);
};
scope.color = function() {
return (scope.differenceInDays() > 10) ? 'green' : 'red';
};
scope.$watch('[firstdate, seconddate]', function(currScope,newVal,oldVal) {
scope.data_before = oldVal;
scope.diff = scope.differenceInDays();
});
scope.$watch('[firstdate, seconddate]', function(currScope,newVal,oldVal) {
scope.data_before = oldVal;
scope.col = scope.color();
});
}
CSS
h2 { position: fixed; right: 10px; top: 10px; color: red; background:white;z-index:1000; }
input { width: 100px; }
div { margin: 10px; padding: 10px; }
嗯,我想真正的问题是我如何计算天的不同? – user1399078 2013-03-08 16:38:59
@ user1399078查看小提琴和代码添加 - 也许这有助于 – 2013-03-08 17:16:33
@ChrisMoutray,这是一个很好的例子,但如何做到这一点在数组中的每个项目? – vittore 2013-05-22 16:03:05
基本的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 d1 = moment("01/16/2013");
var d2 = moment("02/26/2013");
var days = moment.duration(d2.diff(d1)).asDays();
你简单地转换成日期戳,然后减去。
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);
这个工程,这里是2完美的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);
}
如何适应这种方法来计算分钟? – 2017-04-07 21:48:08
它实际上计算以毫秒为单位的差值(千分之一秒)并将结果除以_MS_PER_DAY得到天数。所以,如果你想获得分钟数,你可以添加一个变量“divisor”来替换它,并通过多少ms来分配,或者将_MS_PER_DAY更改为ms每分钟,或者= 1000 * 60 :) – 2017-04-21 19:15:24
谢谢!之后我解决了这个疑问。 :) – 2017-04-21 23:04:15
您可以使用angular-moment计算差值,使用amDifference过滤器:
获取毫秒两个日期之间的差异。参数是 日期,单位和usePrecision。日期默认为当前日期。例如:
<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()
);
我使用parseInt函数,因为我要回整数值仅
希望这个作品
当下JavaScript库真的是非常有用的,易于使用:
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
asWeeks();
asMonths();
asYears();
等等等等以了解详情http://momentjs.com/docs/
什么是你的代码是什么样子? – 2013-03-08 16:27:59
添加了2个答案的任何想法? – 2013-03-15 14:44:34