как правильно передать в DatePicker строковое представление Date в формате M / d / yy - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в angular и пытаюсь решить следующую проблему: у меня есть этот код

<div class="col-xs-6">
                    <label for="from">Date from*</label>
                    <div ng-controller="DatePickerCtrl" class="form-group"
                         ng-class="{'has-error': formErrors.dateFrom}">
                        <p class="input-group">
                            <input type="text" class="form-control" id="from" name="from"
                                   placeholder="{{dateOptions.format}}"
                                   datepicker-options="dateOptions"
                                   datepicker-popup="{{dateOptions.format}}"
                                   datepicker-append-to-body="true"
                                   on-open-focus="false"
                                   ng-model="formData.dateFrom"
                                   ng-change="formErrors.dateFrom = isDateAfter(formData.dateFrom, formData.dateTo)"
                                   required
                                   is-open="opened" close-text="Close" aria-describedby="from"
                            />
                            <span class="input-group-btn">
                    <button class="btn btn-default" ng-click="toggle($event)">
                        <i class="glyphicon glyphicon-calendar"></i>
                    </button>
                </span>
                        </p>
                        <div class="help-block" ng-class="{'has-error': formErrors.dateFrom.length}"
                             ng-bind="formErrors.dateFrom"></div>
                    </div>
                </div>

enter image description here

I Нужен следующий функционал - когда я пу sh нажимаю кнопку «Генерировать», мне нужно передать датайкеру новую дату (). Так что мой отчет должен создать несколько отчетов в течение сегодняшнего дня (текущая дата). Это похоже на некоторую автоматизацию, вместо того, чтобы выбирать дату вручную, я просто хочу нажать кнопку «Создать», и текущая дата передается в сборщик данных и отображается на экране. Предположим, что текущая дата 3/11/2020. Тогда у меня должен был быть результат на экране 3/11/20. Но у меня всегда минус 1 день ... enter image description here

Мой data_picker:

app.controller('DatePickerCtrl', ['$scope', '$filter', '$log',
function($scope, $filter, $log) {

    init();

    function init() {
        $scope.opened = false;

        $scope.toggle = function($event) {
            $event.preventDefault();
            $event.stopPropagation();
            $scope.opened = !$scope.opened;
        };

        $scope.dateOptions = {
            format: 'M/d/yy',
            startingDay: 1
        };
    }

    $scope.isDateAfter = function(minDate, selectedDate) {
        if (minDate && selectedDate) {
            var fromDate = new Date(minDate);
            var toDate = new Date(selectedDate);
            if (dateAfter(fromDate, toDate)) {
                return 'Invalid range. Date from is after date to';
            }
        }
        return '';
    };

    function dateAfter(from, to) {
        return from.getTime() > to.getTime();
    }

}
]);

Вот так я создаю дату для средства выбора даты:

 function getDate() {
        let today = new Date;
        let mm = today.getUTCMonth() + 1;
        let dd = today.getUTCDate();
        let yy = today.getUTCFullYear().toString().slice(2, 4);
        return mm + '/' + dd + '/' + yy;
    }

Основная проблема в том, что средство выбора даты отнимает один день от текущего дня, который я ему передал! Я просто жестко закодировал дату «3/11/20» и вместо этого вижу на экране дату «3/10/20». Не могу решить эту проблему ((Может быть, кто-то может помочь мне с этим? Заранее спасибо)

решено: средство выбора даты работает правильно, только когда я передаю ему дату в полном формате, например -> new Date ();

1 Ответ

1 голос
/ 11 марта 2020

Вы можете использовать DatePipe по умолчанию в Angular.

https://angular.io/api/common/DatePipe

или вы можете назначить дату одной переменной

`today = new Date()`

`<p>Today date is {{today | date: 'MM/dd/yy'}}</p>`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...