Как настроить формат даты как «ГГГГ-ММ-ДД ЧЧ: мм: сс»?

#angular #momentjs #mat-datepicker

#angular #momentjs #mat-datepicker

Вопрос:

Возвращает объект момента вместо значения даты в формате «ГГГГ-ММ-ДД ЧЧ: мм: сс»

Я попробовал следующее, но вместо даты получил объект moment. Я много искал, но ни один из них не дал мне решения.

 import * as _moment from 'moment';
import { default as _rollupMoment } from 'moment';
const moment = _rollupMoment || _moment;

export const MY_FORMATS = {
    parse: {
        dateInput: 'YYYY-MM-DD HH:mm:ss',
    },
    display: {
        dateInput: 'YYYY-MM-DD HH:mm:ss',
        monthYearLabel: 'MMM YYYY',
        dateA11yLabel: 'YYYY-MM-DD HH:mm:ss',
        monthYearA11yLabel: 'MMMM YYYY',
    },
};
  
  

Я предоставил формат внутри @Component decorator

 @Component({
     providers: [
    {
      provide: DateAdapter,
      useClass: MomentDateAdapter,
      deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]
    },
    { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
  ]
})
  

Внутри класса =>

  dateOfBirth: new FormControl();
  

Комментарии:

1. с какой проблемой вы боретесь?

2. лучше всего понять саму документацию angular. можете ли вы проверить пример выбора даты, который использует Moment.js даты stackblitz.com/angular /…

3. @noamsteiner Я получаю moment.js объект вместо требуемого формата даты

4. @GauravUpadhyay в качестве вашего примера stackblitz мы можем видеть формат даты в datepicket, но я говорю о возвращаемом значении

5. @Praveen RL — это не так уж и ясно. либо вы должны отредактировать свой вопрос, точно указав, в чем проблема, и чего вы ожидаете от комментариев. если возможно, создайте stackblitz.

Ответ №1:

Добавьте приведенный ниже код в свое приложение.

app.module.ts

  import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
    import { MomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';
    import { DatePipe } from '@angular/common';
    
    export const DateFormats = {
        parse: {
            dateInput: 'YYYY-MM-DD HH:mm:ss',
        },
        display: {
            dateInput: 'YYYY-MM-DD HH:mm:ss',
            monthYearLabel: 'MMM YYYY',
            dateA11yLabel: 'YYYY-MM-DD HH:mm:ss',
            monthYearA11yLabel: 'MMMM YYYY',
        },
    };
    
    
    providers: [
        { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
        { provide: MAT_DATE_FORMATS, useValue: DateFormats }
        , DatePipe
    ],
  

*.components,ts

 dateOfBirth: new FormControl();
  

Если вы правильно добавите приведенный выше код в свой проект, вы получите все значения даты в этом формате ГГГГ-ММ-ДД ЧЧ: мм: сс

Комментарии:

1. правильную дату можно получить, когда я использовал это в приложении stackblitz, но в другом существующем приложении он возвращает объект момента вместо значения даты

2. братан, сделай дату ГГГГ-ММ-ДД ЧЧ: мм: сс в формате, чтобы вернуть панануму. db la store panrahuku

Ответ №2:

попробуйте этот код.

 import { DatePipe, formatDate } from '@angular/common';
import { Component, OnInit, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';
import { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';

export class UserRegistrationComponent implements OnInit {
dateOfBirth: new FormControl();

constructor(private datePipe: DatePipe){

}

save(){
    this.datePipe.transform(this.dateOfBirth.value, "yyyy-MM-dd HH:mm:ss");
}
}
  

Комментарии:

1. Я знаю это, братан, но мне нужно значение даты из mat-datepicker без какого-либо метода в файле .ts, потому что я использую так много полей даты внутри формы, поэтому преобразование каждого поля не кажется лучшим.

2. Братан, насколько мне известно, без преобразования даты мы не можем преобразовать дату. Если вы сделаете это, пожалуйста, поделитесь со мной

3. Извините, я что-то пропустил в предыдущем комментарии, мне нужно значение даты из datepicker, используя метод, используемый в вопросе. Пожалуйста, обратитесь к этому приложению stackblitz — выберите дату, отправьте и проверьте ее в консоли: angular-mat-datepicker-custom-format.stackblitz.io