我使用ng-pick-datetime UI组件作为日期选择器。我禁用了readonly
模式,因此输入处于活动状态,无法用键盘输入。
<owl-date-time name="client_birthday" #client_birthday="ngModel"
[placeHolder]="'DD.MM.YYYY'"
[locale]="ru"
[(ngModel)]="client.client_birthday"
[type]="'calendar'"
[dataType]="'string'"
[dateFormat]="'DD.MM.YYYY'"
[readonlyInput] ="false"
[autoClose] ="true"
[inputId]="'client_birthday'"
></owl-date-time>
我尝试使用RU
:
date-fns
区域设置
ru: any;
ruLocale = require('date-fns/locale/ru');
ngOnInit() {
this.ru = {
firstDayOfWeek: 1,
dayNames: [...],
dayNamesShort: [...],
monthNames: [...],
monthNamesShort: [...],
dateFns: this.ruLocale
};
}
当我输入dd.mm.yyyy
格式的输入时,选择器将日期视为一个月和一个月,并且年份正常。因此,它识别的唯一格式是mm.dd.yyyy
,它似乎是us
区域设置。我的日历语言按预期更改了,但是是否可以为RU
配置日期格式?
我将不胜感激。
答案 0 :(得分:6)
通过在ng-pick-datetime的输入框中键入,它无法在输入日期时执行您想要的操作。 我完成了ng-pick-datetime组件的实现。 键入时,给定输入使用https://date-fns.org/v1.29.0/docs/parse转换为日期对象 这是实施 picker.component.ts / src / picker.component.ts Line-1177 Method-parseToDate
/**
* Parse a object to Date object
* @param {any} val
* @return {Date}
* */
private parseToDate( val: any ): Date {
if (!val) {
return;
}
let parsedVal;
if (typeof val === 'string') {
parsedVal = parse(val, this.dateFormat, this.now);
} else {
parsedVal = val;
}
return isValid(parsedVal) ? parsedVal : null;
}
https://github.com/DanielYKPan/date-time-picker使用了&#34; date-fns&#34;:&#34; ^ 2.0.0-alpha.7g&#34;在包json上。它有一个参数将日期格式传递给解析日期。
parsedVal = parse(val, this.dateFormat, this.now);
但最新版本的date-fns:&#34; ^ 1.29.0&#34;,没有parmeter来传递日期格式。所以它也失败了你的项目。请阅读https://date-fns.org/v1.29.0/docs/parse
parse(argument, [options])
答案 1 :(得分:2)
与此类似:
@NgModule({
providers: [
{ provide: LOCALE_ID, useValue: "ru-ru"},
//otherProviders...
]
})