ion-datetime: Как получить значение даты без метки времени? - PullRequest
2 голосов
/ 22 апреля 2019

Я использую ion-datetime в ionic4, используя NgModel для привязки к свойству, однако, независимо от того, какие параметры я включаю в формат, я всегда получаю время с включенной меткой времени. ¿Как я могу удалить метку времени из результата, чтобы конечное значение моего свойства было что-то вроде «2019-04-22» вместо «2019-04-22T08: 45: 41.243-05: 00»?

Я пытался: но я все еще получаю метку времени

 <ion-datetime max="2030" min="2019" [(ngModel)]="mydate" display-format="MMM DD, YYYY"></ion-datetime>

Я ожидаю, что результат будет примерно таким: "2019-04-22", но я продолжаю получать: "2019-04-22T08: 45: 41.243-05: 00"

Ответы [ 3 ]

1 голос
/ 22 апреля 2019

Вы можете отформатировать дату с помощью Moment.js.

<ion-datetime displayFormat="MMM DD, YYYY" max="2030" min="2019" [(ngModel)]="mydate" (ionChange)="doSomething(this.mydate)"></ion-datetime>

import * as moment from 'moment';

doSomething(date) {
   console.log('date', moment(date).format('YYYY-MM-DD')); // 2019-04-22
}
0 голосов
/ 03 июля 2019

Если вам нужна только дата, то я думаю, что метод split () может работать, потому что значение, которое мы получаем из ion-datetime, является строкой. Поэтому мы используем метод split, который разбивает строку и преобразует ее в массив, и вы можете получить дату или время, что вы хотите с помощью индекса следующим образом:

     var dateFormat = mydate.split('T')[0]; 
     console.log(dateFormat);
     // 2019-04-22
0 голосов
/ 22 апреля 2019

Редактировать: Из ионных документов

Также важно отметить, что ни displayFormat, ни pickerFormat может установить вывод значения datetime, который является значением это устанавливается компонентом ngModel. Формат только для отображение значения в виде текста и интерфейса выбора, но Значение datetime всегда сохраняется в качестве действительного datetime ISO 8601 строка.

Вот лучший ответ:

const dateObject = new Date(this.mydate);
const dateString = dateObject.toLocaleFormat('%Y-%m-%d');

Вводом для new Date может быть строка даты , определенная как:

Строковое значение, представляющее дату. Строка должна быть в формате распознается методом Date.parse () (IETF-совместимый RFC 2822) метки времени, а также версия ISO8601).


Полагаю, вы пытаетесь получить доступ к this.mydate в своем коде.

У вас есть несколько опций, лучше всего представленных в этом посте переполнения стека .

this.mydate.toLocaleFormat('%Y-%m-%d');

Эта функция возьмет объект Date и преобразует его в строку в запрошенном вами формате. Все опции, которые вы можете ввести в опции: здесь .

Есть также много других опций, показанных в сообщении о переполнении стека выше.

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