我正在为我的项目使用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
答案 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。检查