【问题标题】:Convert date string ddmmyy to dd/mm/yyyy in angular ng datepicker在角度 ng datepicker 中将日期字符串 ddmmyy 转换为 dd/mm/yyyy
【发布时间】:2020-04-28 03:42:47
【问题描述】:

我正在使用NgbDatePicker,问题是每当用户单击切换按钮并选择日期时,意味着它会同时转换所需的格式dd/mm/yyyy,而不是选择用户输入日期为字符串,如ddmmyyyy 它不会转换到dd/mm/yyyy(例如:10072020 到 10/07/2020)拆分在CustomDateParserFormatter 中没有按预期工作。请帮助我如何解决这个问题,我不知道如何继续。 component.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;
    }
}

component.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

【问题讨论】:

    标签: angular typescript ng-bootstrap bootstrap-datepicker angular9


    【解决方案1】:

    首先你应该更改代码

    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;
    }
    

    【讨论】:

    • @santhoskadam 但格式不随 dd/mm/yyyyy 改变
    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2018-05-19
    • 2019-08-02
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多