angular - 在角度 ng datepicker 中将日期字符串 ddmmyy 转换为 dd/mm/yyyy
问题描述
正在使用NgbDatePicker
的问题是,每当用户单击切换按钮并选择日期时,这意味着它同时转换所需dd/mm/yyyy
的格式,而不是选择用户输入日期作为字符串,就像ddmmyyyy
它不会转换为一样dd/mm/yyyy
(例如:10072020 到 2020 年 7 月 10 日)拆分未按预期工作CustomDateParserFormatter
。请帮助我如何解决这个问题,我不知道如何继续。
组件.ts
import { Injectable } from '@angular/core';
import { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
@Injectable()
export class CustomDateParserFormatter {
parse(value: string): NgbDateStruct {
if (!value) {
return null;
}
const parts = value;
parts.split('/');
console.log("first calling");
return { year: +parts[0], month: +parts[1], day: +parts[2] } as NgbDateStruct;
}
format(date: NgbDateStruct): string {
// tslint:disable-next-line:prefer-template
console.log("second calling");
return date ? ('0' + date.day).slice(-2) + '/' + ('0' + date.month).slice(-2) + '/' + date.year : null;
}
}
组件.html
<div class="input-group datePicker">
<input class="form-control" placeholder="DD/MM/YYYY" ngbDatepicker formControlName="dateofBrith"
[minDate]="{year: 1945, month: 1, day: 1}" [maxDate]="{year: 2020, month: 12, day: 31}"
name="dp" ngbDatepicker #d="ngbDatepicker" (ngModelChange)="changeDob($event)"
maxlength="10">
<div class="input-group-append">
<button class="btn calendar btn-custom btn-outline-secondary" (click)="d.toggle()"
type="button"><img src="/assets/images/dateicon.png"></button>
</div>
</div>
在 console.log ("firstcalling") 中,当用户直接输入值时,字符串拆分不起作用,它应该转换为dd/mm/yyyy
. 你们能帮我如何将日期字符串转换ddmmyyyy
为日期格式吗dd/mm/yyy
?
解决方案
首先你应该改变代码
const parts = value;
parts.split('/');
对此
const parts = value.split('/');
您还需要在拆分后进行检查。以下条件检查它是否包含 / 即是否手动输入。
if(parts.length === 3) {
return { year: +parts[0], month: +parts[1], day: +parts[2] } as NgbDateStruct;
}
else {
return { year: +value.substring(0,2), month: +value.substring(2,4), day:
+ value.substring(4,8) } as NgbDateStruct;
}
推荐阅读
- ruby-on-rails - 将代码移至 gem 后如何调试代码
- ruby-on-rails - Ruy - 如何包含一个巨大的数组的 .rb 文件
- java - 为什么 Java 崩溃(退出代码 134)?
- sql - 如何获得命名内部联接的不同计数?
- javascript - 查看源代码时如何使代码在单行中?
- java - 尝试在空对象引用上调用虚拟方法 'android.app.Notification androidx.core.app.NotificationCompat$Builder.build()'
- c# - 需要向 NewActionConfiguration 添加参数,但不能在定义中使用 foreach
- sql - 如何使用 over() 函数列出出现次数,但只显示结果中列出 3 次或更多次的出现次数?
- python - 带 Heroku 的 Telebot
- android - 实时数据库显示数据是否仍未上传