【问题标题】:Angular comparing fulldate角度比较完整日期
【发布时间】:2014-05-29 10:54:27
【问题描述】:

我正在尝试比较 Angular 中的 fulldate,我不确定这是否可行。

在我的控制器中,日期输入为“mm/dd/yy”

$scope.today = $filter('date')(Date.now(), "fullDate");

angular.forEach(courses, function(item) {
            if(item.date === null) { 
                item.date = "";
            } else {
                item.orig = item.date.split('/').join('.');
                item.date = $filter('date')(new Date(item.date), "fullDate");
            }
});
$scope.courses = courses;

然后在我的 HTML 中,我有以下内容:

<someelement ng-if="today >= course.date" />

结果不一致,即&gt;= 未正确评估。

编辑:

解决方案是比较日期对象而不是 $filter 返回的字符串

所以:

today = new Date();

然后从字符串输入创建一个新的日期

somedate = new Date(yyyy,mm,dd);

【问题讨论】:

  • course.date 也是同样的格式吗?
  • 是的,它被转换为一个完整的日期。我找到了解决方案,我认为问题在于比较字符串而不是日期对象。

标签: angularjs date


【解决方案1】:

解决此问题的一种方法是将两个日期转换为从 1970 年 1 月 1 日 00:00:00 UTC 时间开始的毫秒数。您可以为此使用 Date.UTC() 方法。

您可以在此处查看 Date.UTC() 的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC

所以对于今天的约会,你会这样做:

    var now = new Date;                                            
    $scope.todaysDate = Date.UTC(now.getUTCFullYear(),now.getUTCMonth(), now.getUTCDate() , 
  now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());

对于给定的日期:

    $scope.givenDate = Date.UTC(givenYear, givenMonth, givenDate);

请注意,givenYear 应该是 yyyy 格式,并且 givenMonth 应该是 0 到 11 之间的数字。所以一月是 0,十二月是 11。所以你必须实现一个函数来进行转换.

您可以通过以下方式获取原始格式的年、月和日期:

    var arr = item.date.split('/');

您必须将 arr[0]、arr[1] 和 arr[2] 转换为适当的形式,并将其用作 Date.UTC() 的参数。

现在 $scope.todaysDate 和 $scope.givenDate 以毫秒为单位,您可以轻松比较它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2023-03-22
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多