如何减去两个angularjs日期变量 [英] How to subtract two angularjs date variables

查看:338
本文介绍了如何减去两个angularjs日期变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是相当新的angularjs,但在这里不言而喻。我公司通过angularjs能够两个日期的形式 DD / MM / YYYY ,但我需要做的是不知何故减去两个日期以获得天两者之间的区别。我创建了一个jQuery函数来做到这一点,但我不知道如何在这两个日期的函数传递。所以我在想,如果有一种不同的方式来进行此事?

I am fairly new to angularjs, but here it goes. I am able two dates through angularjs in the form dd/mm/yyyy, but what I need to do is somehow subtract the two dates to get the difference in days between the two. I created a jquery function to do this, but I don't know how to pass in the two dates to the function. So I was wondering if there was a different way to go about this?

我想设置为:根据天数的触发系统在这两个日期为某些事情之间进行程式化。例如,如果是10天之内,我希望它使用风格1 并如果20天之内使用风格2 等。

I am trying to set up a trigger system depending on the number of days in between the two dates for certain things to be stylized. For example if it's within 10 days I want it to use style 1 and if its within 20 days use style 2 and so on.

推荐答案

我也是一个新手angularjs,但你不通过你的JavaScript的视图模型使可用的属性处理呢?

I'm also an angularjs novice but wouldn't you handle this by making properties available through your javascript view model?

例如有一个变化的基础上的日期字段中的风格的字段(即风格的回报方式1时,如果差值为10天),希望通过angularjs绑定更新将传播到屏幕

For example have a style field that changes based on the date fields (ie style returns style 1 when if the difference is 10 days) and hopefully through the angularjs binding the updates will propagate to the screen.

我觉得这个正确的术语是的计算财产计算财产

I think the right term for this is a computed property or calculated property

修改

不知道这是你在找什么,但看到小提琴,例如计算日期差异和改变风格的视图模型(范围)

Not sure if this is what you're looking for but see fiddle for example of calculating date diff and changing a style all based off properties of the view model (scope)

scope.diff scope.col 是2个属性绑定到

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; }

这篇关于如何减去两个angularjs日期变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆