如何在ngx-mydatepicker中自定义日期格式?

时间:2018-01-21 19:44:53

标签: javascript html angular typescript datepicker

我使用ngx-mydatepicker指令https://github.com/kekeh/ngx-mydatepicker

我想获得这样的日期格式:2018年1月21日,但是在这个日期选择器中它不受支持。

据我所知,如果从1月到1月更改 monthLabels ,我会得到必要的结果,但是,此操作也会更改内联日历中的月份标签,但它们可能不完全适合。

我试图用管道。并且date.formatted已按照我的意愿更改,但未在浏览器中显示。

date = {
  date: {year: 2018, month: 1, day: 30}
  epoc: 1517259600
  formatted: "30 January, 2018"
  jsdate: Tue Jan 30 2018 00:00:00 GMT+0300
}

在组件中

option = {
monthLabels: <IMyMonthLabels>{
  1: 'Jan',
  2: 'Feb',
  3: 'Mar',
  4: 'Apr',
  5: 'May',
  6: 'Jun',
  7: 'Jul',
  8: 'Aug',
  9: 'Sep',
  10: 'Oct',
  11: 'Nov',
  12: 'Dec'
},
dateFormat: 'dd mmm, yyyy',

HTML

<input type="text" name="date"
ngx-mydatepicker 
[ngModel]="date | dateFormat" 
(dateChanged)="date=$event" 
[options]="options"
#dp="ngx-mydatepicker">     

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'dateFormat'
})

export class DateFormatPipe implements PipeTransform {
  transform(date: any): any {
    if (!date) { return {}; }
    const monthNames = [
      'January', 'February', 'March',
      'April', 'May', 'June', 'July',
      'August', 'September', 'October',
      'November', 'December'
    ];
    date.formatted = date.jsdate.getDate() + ' ' + monthNames[date.jsdate.getMonth()] + ', ' + date.jsdate.getFullYear();
    return date;
  }
}

1 个答案:

答案 0 :(得分:0)

  1. 编写[ngModel]和(dateChanged)或(ngModelChange)代替双向绑定[(ngModel)]是必要的:

    <input type="text" name="date" ngx-mydatepicker [ngModel]="date" dateChanged)="onDateChange($event)" [options]="options" #dp="ngx-mydatepicker"> 
    
  2. 在功能 onDateChange()中,我们可以根据需要自定义日期格式。例如:

    changeFormat(event: IMyDateModel): void{
    const monthNames = [
      'January', 'February', 'March',
      'April', 'May', 'June', 'July',
      'August', 'September', 'October',
      'November', 'December'
    ];
    event.formatted = event.jsdate.getDate() + ' ' +     monthNames[event.jsdate.getMonth()] + ', ' + event.jsdate.getFullYear();
    

    }

  3. 完成。现在您的格式为 2018年1月22日