【问题标题】:ngb date picker date format and display changengb 日期选择器日期格式和显示更改
【发布时间】:2021-05-22 15:05:03
【问题描述】:

我正在使用 ngb 日期选择器。这是我的html

<div class="input-group">
   <input class="form-control ngbfield" placeholder="yyyy-mm-dd" required
      name="checkdate" [readonly]="true" #vl="ngModel"
      [(ngModel)]="profile.checkDate" ngbDatepicker #d1="ngbDatepicker"
      required>
   <div class="input-group-append">
      <button class="btn btn-outline-secondary fa fa-calendar" (click)="d1.toggle()" type="button"></button>
   </div>
</div>

目前,日期选择器运行良好。我使用控制台日志检查了它。这是我的控制台日志

这是我的组件文件

export class MyProfileComponent implements OnInit {
   profile: any = {};
   @ViewChild(NgForm) profileform: NgForm;
   dtOptions: DataTables.Settings = {};
   constructor(private calendar: NgbCalendar) { }
    
   ngOnInit() {
      this.selectToday();
   }
   selectToday() {
     this.profile.checkDate = this.calendar.getToday();
   }
   addScheduleCheckin(a) {
     console.log(a);
     alert(a);
   }
}

但我需要得到这个日期如下 检查日期:“2021-05-22”

在这个库中有任何选择。

【问题讨论】:

    标签: angular ng-bootstrap


    【解决方案1】:

    这篇文章有一个非常有趣的答案:How to change ngbDatepicker date format from JSON to YYYY/MM/DD

    您需要创建一个适配器来将 NgbDateStruct 转换为您想要的字符串格式并将字符串转换为 NgbDateStruct,然后将其添加到您的提供程序中

    编辑以在评论中回答您的问题:

    要创建服务并在您希望的任何地方使用它,您首先要创建这样的服务:

    import { Injectable } from '@angular/core';
    
    @Injectable({
      providedIn: 'root'
    })
    
    export class ConverterDateService {
       
       constructor() { }
    
       convertNgbDateToString(dateToConvert) {
          return dateToConvert.year + '-' + ('0' + (dateToConvert.month)).slice(-2) + '-' + ('0' + dateToConvert.day).slice(-2);
       }
    

    然后像这样将它注入到组件的构造函数中:

    constructor(private converterDateService: ConverterDateService) { }
    

    然后你把它调用到你的函数中:

    this.formattedCheckDate = this.converterDateService.convertNgbDateToString(this.profile.checkDate);
    

    希望对你有帮助:)

    【讨论】:

    • 这对我来说效果很好 this.formattedCheckDate = this.profile.checkDate.year + '-' + ('0' + (this.profile.checkDate.month)).slice(-2 ) + '-' + ('0' + this.profile.checkDate.day).slice(-2);
    • 我可以使用我的解决方案,我如何编写一个通用的可重用函数
    • @Kumara 通过做这样的事情:convertDate(dateToConvert): string { return dateToConvert.year + '-' + ('0' + (dateToConvert.month)).slice(-2) + '-' + ('0' + dateToConvert.day).slice(-2);} 然后你称之为this.formattedCheckDate = this.convertDate(this.profile.checkDate);
    • 您甚至可以将它放在另一个类中,并使其成为静态,以便在您需要的任何地方调用它
    • 我需要使用另外 2 个表格。我如何使用它并编写公共服务或其他东西,然后我可以将它附加/注入到我的组件中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多