从材料日期选择器中提取和分解日期

时间:2021-01-26 07:37:59

标签: angular typescript

所以我想弄清楚如何“正确地”将我从日期范围选择器中获取的日期分开。

我已经设法将它们分成开始值和结束值,但我需要更多然后可能使用某种正则表达式将日期分隔为 D/M/Y,因为我有 3 个变量我需要稍后填写我需要对年份进行计算,而一个值对此很糟糕。好奇是否有人对此有任何想法

输出:

1/1/2021 || 1/8/2021
    <mat-form-field appearance="fill">
        <mat-label>Enter a date range</mat-label>
        <mat-date-range-input [formGroup]="range" [rangePicker]="picker">
          <input style="position: relative;" #Startz matStartDate formControlName="start" placeholder="Start date">
          <input style="position: relative;"  #Endz matEndDate formControlName="end" placeholder="End date">
        </mat-date-range-input>
        <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
        <mat-date-range-picker #picker></mat-date-range-picker>
      
        <mat-error *ngIf="range.controls.start.hasError('matStartDateInvalid')">Invalid start date</mat-error>
        <mat-error *ngIf="range.controls.end.hasError('matEndDateInvalid')">Invalid end date</mat-error>
      </mat-form-field>
      
 
     <div class="">
        <input type="text" class="" placeholder="info" #info required>
     </div>
    
     <button style="margin-right:10px;" type="button" class="btn googleBtn" value="Log In" (click)="createEntry(Startz.value, Endz.value, info.value)">Create Entry</button>


createEntry(startDate, endDate,  info: string){
      alert(startDate + endDate);
  }
export class Entry {
    id: string;
    surname: string;
    color: string;
    startDate: Startdate;
    endDate: Enddate;
    info: string;
    status: boolean;
}

export class Startdate{
    day: number;
    month: number;
    year: number;
}

export class Enddate{
    day: number;
    month: number;
    year: number;
}

这是我到目前为止所做的,但肯定应该有更好的解决方案:

    var value = startDate;
    var day = value.substring(0,1);
    var month = value.substring(2,3);
    var year = value.substring(4,8);
    var str = "{Day:" + day + ",month:" + month + ",year:" + year + "}";
      alert(str);

这种方式的问题在于,一旦你以两位数的天数/月数结束,它就会中断

1 个答案:

答案 0 :(得分:0)

解决方案:

 var startValue = startDate.split("/");
    var startDay = startValue[0];
    var startMonth = startValue[1];
    var startYear = startValue[2];
    
    var endValue = endDate.split("/");
    var endDay = endValue[0];
    var endMonth = endValue[1];
    var endYear = endValue[2];

感谢来自打字稿社区 Discord 的一位非常友好的人!

我希望这对未来的其他人有所帮助

相关问题