ngbDatepicker日期格式:YYYY-MM-DD

时间:2018-02-15 09:55:16

标签: angular datepicker ng-bootstrap

我正在为我的项目使用Angular 5.所以我在表格中有日期输入字段我使用的是NgbDatepicker但是我无法设置yyyy-mm-dd格式。而且当我选择日期时,它是在约会前一天显示。请帮帮我。

<form class="form-inline">
    <div class="form-group">
      <div class="input-group">
        <input class="form-control" placeholder="yyyy-mm-dd"
               name="d2" #c2="ngModel" [(ngModel)]="model2" ngbDatepicker #d2="ngbDatepicker">
        <div class="input-group-append">
          <button class="btn btn-outline-secondary" (click)="d2.toggle()" type="button">
            calender
          </button>
        </div>
      </div>
    </div>
  </form>
  <hr/>
  <pre>Model: {{ model2 | json }}</pre>

app.component.ts

import { Component, OnInit, Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/timer';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/take';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
model2: Date;
}

输出:型号:&#34; 2018-01-31T18:30:00.000Z&#34; ,在这里我选择了2018-02-01

1 个答案:

答案 0 :(得分:1)

您使用的是https://ng-bootstrap.github.io/#/components/datepicker/examples吗?还是旧版本?

如果您正在使用ng-bootstrap,我必须说明您正在使用datepicker-adapter(ngbDatepicker,缺陷由ngDateStructure提供) 问题是该示例是错误的

//This function it's not correct
toModel(date: NgbDateStruct): Date {
    return date ? new Date(date.year, date.month - 1, date.day) : null;
  }
//Change by 
toModel(date: NgbDateStruct): Date {
    return date ? new Date(''+date.year+'-'+date.month+'-'+date.day) : null;
  }

问题是新的Date()考虑了GTM区域,所以如果你住在GTM +中,第一个功能会给你少一天

关于dateFormat,你有一个NgbDateParserFormatter。检查