собирать числа и конвертировать их в дату в angularjs - PullRequest
2 голосов
/ 28 мая 2019

У меня есть 3 области в angularjs, одна на год, одна на месяц и одна на день, приходящая из 3 полей ввода. Я хочу объединить их как дату, следующий код вставляет дату правильно, но с добавлением 22:00:00, например, 2019-06-01 22: 00: 00.000. Как вставить дату только без времени

HTML

<div class="col-md-1">
    <div class="form-group has-error">
        <label class="title_lable">Year:</label>
        <input id="code" type="number" class="form-control input-sm"
               ng-model="year">
    </div>
</div>
<div class="col-md-2">
    <div class="form-group has-error">
        <label class="title_lable">Latin Description:</label>
        <input type="text" class="form-control input-sm"
               ng-model="latindesc">
    </div>
</div>
<div class="col-md-2">
    <div class="form-group">
        <label class="title_lable">Local Description:</label>
        <input type="text" class="form-control input-sm"
               ng-model="localdesc">
    </div>
</div>
<div class="col-md-1">
    <div class="form-group">
        <label class="title_lable">Month:</label>
        <select ng-show="lang==1" class="form-control input-sm"
                ng-model="month"
                ng-options="m.mnthid as m.mnthanm for m in months">
        </select>
        <select ng-show="lang==0" class="form-control input-sm"
                ng-model="month"
                ng-options="m.mnthid as m.mnthenm for m in months">
        </select>
    </div>
</div>
<div class="col-md-1">
    <div class="form-group">
        <label class="title_lable">Day:</label>
        <input type="number" class="form-control input-sm" ng-model="day">
    </div>
</div>

Угловая

var dFrom = new Date($scope.month + '/' + ($scope.day + 1) + '/' + $scope.year );
        var days = $scope.ndays;
        console.log(days);
        var todate = new Date($scope.month + '/' + ($scope.day +1) + '/' + $scope.year);
        todate = addDays(todate, days - 1);
        console.log(todate);

        var vacation = {
            Sys_Key: $scope.syskey,
            Vac_Code: $scope.code,
            L_Desc: $scope.latindesc,
            A_Desc: $scope.localdesc,
            V_Start_Date: $scope.day,
            V_Month: $scope.month,
            V_Days_Count: $scope.ndays,
            V_Year: $scope.year,
            From_Date: dFrom,
            To_Date: todate
        }

function addDays(startDate, numberOfDays) {
    var returnDate = new Date(
        startDate.getFullYear(),
        startDate.getMonth(),
        startDate.getDate() + numberOfDays,
        startDate.getHours(),
        startDate.getMinutes(),
        startDate.getSeconds()
    );
    return returnDate;
} 

Ответы [ 3 ]

1 голос
/ 28 мая 2019

код вставляет дату правильно, но к ней добавляется 22:00:00, например 2019-06-01 22: 00: 00.000. Как вставить дату только без времени

Под капотом дата анализируется до 00:00 часов по UTC. Стандартный метод .toString отображает его как местное время.

var d = new Date("2019-06-01");

console.log(d.toString());

console.log(d.toISOString());

Если вы хотите, чтобы он анализировался по местному времени, добавьте "T00: 00"

var d = new Date("2019-06-01T00:00");

console.log(d.toString());

console.log(d.toISOString());

Когда смещение часового пояса отсутствует, формы только для даты интерпретируются как время UTC, а формы даты и времени интерпретируются как местное время.

Для получения дополнительной информации см.

1 голос
/ 28 мая 2019

При добавлении в javascript убедитесь, что вы используете числовые значения, а не строки. Вы можете конвертировать строки в целые числа с помощью parseInt(string)

0 голосов
/ 28 мая 2019

Вы можете сделать это как,

let dateString = "05/05/1997";

let date = new Date(dateString);

console.log(date.toLocaleString('en-US', {
      day:"2-digit",
      month:"2-digit",
      year:"numeric"
    }));

Пожалуйста, проверьте следующую ссылку,

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...