Как получить оставшиеся часы между текущей датой и датой в миллисекундном формате в угловых?

0

Я использую angularjs для отображения списка элементов в jsonArray. и я хочу, чтобы вычислить оставшиеся часы, так что я думаю, что для того, чтобы решить, что мне нужно вычесть текущую дату с датой от jsonArray, который является purchaseTime. Результат должен быть таким, как этот формат: 12 часов

скрипт

angular.module('myApp', []).controller('orderCtrl', function($scope, $filter) {
$scope.orders = ${orderList.raw()};
});

Элемент jsonArray

"purchaseTime": "1449576000000"

HTML

<div ng-app="myApp" ng-controller="orderCtrl">
<div class="divs" ng-repeat="order in orders| orderBy: '+purchaseTime'">
    <div>
        <ul>
            <li><p>{{$index + 1}}</p></li>
            <li><p>{{(Date.now() - order.purchaseTime) | date:"h"}}</p></li>
        </ul>
    </div>
</div>

Я думаю, что я не получаю правильное оставшееся время. Любая помощь очень ценится. Спасибо!

  • 0
    Я бы посоветовал моменты!
  • 0
    Исходя из моего ответа ниже, я думаю, вам не следует использовать фильтр даты для этой цели, вместо этого просто используйте свое текущее выражение и разделите результат на 1000, чтобы получить секунды, затем разделите снова на 60, чтобы получить минуты, и снова на 60, чтобы получить часы. Таким образом, вы в конечном итоге с чем-то вроде ...
Показать ещё 1 комментарий
Теги:

2 ответа

0
Лучший ответ

Вы можете создать настраиваемую директиву для этой цели:

Javascript

var app = angular.module("myApp", []);

app.controller("orderCtrl", function($scope) {
    $scope.orders = [{id:1,"purchaseTime": "1449651824588"},{id:2,"purchaseTime": "1449665002689"}];
});

app.directive("calcTime", function($compile) {
    var timeDifference;
    var currentDate;
    var deadLine;
    var diffDays;
    var diffHours;
    var diffMinutes;
    return {
        restrict: 'A',
      link: function (scope, element, attrs) {
        currentDate = new Date();
        deadLine = new Date(parseInt(attrs.calcTime)); // setting purchase time Date Object
        deadLine = new Date(deadLine.setDate(deadLine.getDate()+1)); // setting purchase time Date Object + 1 day
        timeDifference = (deadLine.getTime()) - (currentDate.getTime()); // deadline data minus current date
                var diffDays = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); 
        var diffHours = Math.floor(timeDifference / (1000 * 60 * 60)); 
        var diffMinutes = Math.floor((timeDifference-(diffHours*(1000 * 60 * 60))) / (1000 * 60)); 

        element.html(diffDays + " days, " + diffHours + " hours and "+ diffMinutes +" minutes till DeadLine")
            }
    };  
})

HTML

<div ng-app="myApp" ng-controller="orderCtrl">
<div class="divs" ng-repeat="order in orders| orderBy: '+purchaseTime'">
    <div>
        <ul>
            <li>Purchase Time: {{order.purchaseTime | date:'MM/dd/yyyy - hh:mm'}}<p calc-time="{{order.purchaseTime}}"></p></li>
        </ul>
    </div>
</div>

Рабочий JSFIDDLE

  • 0
    Привет, сэр, добрый день! Я попробовал ваш код, и я думаю, что я не получаю правильный результат, потому что мне нужно получить оставшееся время. Время начала - это время покупки, а крайний срок - если вы добавите 24 часа к покупке.
  • 0
    сделано - дайте мне знать, если это работает для вас
Показать ещё 1 комментарий
0

Используя объект Date:

var a = new Date(); // Now
var b = new Date(2010, 0, 1, 0, 0, 0, 0); // 2010
var d = (b-a); // difference in milliseconds

Вы можете получить количество секунд, разделив миллисекунды на 1000 и округляя число:

var seconds = Math.round((b-a)/1000);

Затем вы могли бы получить минуты, разделив секунды на 60, затем на часы, разделив минуты на 60, затем на дни, разделив часы на 24 и т.д.

Вы заметите, что я предоставил некоторые значения для второго объекта Date. Эти параметры следующие:

// new Date(year, month, day, hours, minutes, seconds, milliseconds)

Вам необязательно предоставлять все эти значения, если они не нужны для даты, которую вы хотите представить. Требуются только month и year, остальные являются необязательными.

  • 0
    Спасибо mkelley82 :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню