【问题标题】:How can I fix this error ? days: NaN yearsNaN monthsNaN weeksNaN daysNaN minutesNaN seconds我该如何解决这个错误?天:NaN 年NaN 月NaN 周NaN 天NaN 分钟NaN 秒
【发布时间】:2022-01-18 20:16:42
【问题描述】:

我正在处理一个离子项目,并出现此错误。 我有一个按钮,我想打印用户选择的日期

我的代码

age.component.ts

import { Component, OnInit } from '@angular/core';
import * as moment from'moment';
@Component({
 .....
})
export class AgeComponent implements OnInit {
dob:any = '' ;
myDate = {
  years: 0,
  months:0,
  weeks:0,
  days:0,
  minutes:0,
  seconds:0,
}
  constructor() { }
  calculateAge(){
      let todaysDate = moment(new Date());
      let dob = moment( new Date(this.dob) );
      let duration = moment.duration(todaysDate.diff(dob));
      this.myDate.years = duration.years();
      this.myDate.months = Math.floor(duration.asMonths());
      this.myDate.weeks = Math.floor(duration.asWeeks());
      this.myDate.days = Math.floor(duration.asDays());
      this.myDate.minutes = Math.floor(duration.asMinutes());
      this.myDate.seconds = Math.floor(duration.asSeconds());
  }
    }

这是我的 age.component.html 代码

<ion-datetime class="datetime" [(ngModel)]="dob" pickerFormat="MMM DD YYYY" 
displayFormat="MMM DD, YYYY" min="1950-01-01" max="2050-01-01"></ion-datetime>
<ion-button (click)="calculateAge()" >Calculate</ion-button>
  <span>{{myDate.years}} years</span>
  <span>{{myDate.months}} months</span>
  <span>{{myDate.weeks}} weeks</span>
  <span>{{myDate.days}} days</span>
  <span>{{myDate.minutes}} minutes</span>
  <span>{{myDate.seconds}} seconds</span>

【问题讨论】:

  • 你能在堆栈闪电战中复制这个吗?
  • todaysDate 和 dob 的值返回什么?它们是有效日期吗?同样持续时间的结果是什么
  • Hmm .. 有点奇怪,我尝试在 stackblizt 上复制问题,但错误没有出现,这是链接stackblizt NaN 错误仅在您未从离子中选择日期时发生-日期时间
  • 你可以简单地将let dob 中的条件添加到此 -> let dob = moment( new Date(this.dob ? this.dob : todaysDate)); 这样 NaN 错误就不会出现
  • @IdreesSindi 没问题,如果代码有效,我将评论移至答案部分:)

标签: angular date ionic-framework time


【解决方案1】:

仅当您未从 ion-datetime 中选择任何日期时,才会发生 NaN 错误。 要解决该问题,您只需将变量let dob 中的条件添加到let dob = moment( new Date(this.dob ? this.dob : todaysDate));

TS

calculateAge(){
      let todaysDate = moment(new Date());
      let dob = moment( new Date(this.dob ? this.dob : todaysDate)); <-- add condition here
      let duration = moment.duration(todaysDate.diff(dob));
      this.myDate.years = duration.years();
      this.myDate.months = Math.floor(duration.asMonths());
      this.myDate.weeks = Math.floor(duration.asWeeks());
      this.myDate.days = Math.floor(duration.asDays());
      this.myDate.minutes = Math.floor(duration.asMinutes());
      this.myDate.seconds = Math.floor(duration.asSeconds());
}

这是sample

【讨论】:

  • 好的,我接受了正确的解决方案谢谢,但我还有一件事请帮助我,正如您在单击按钮 [ calculateAge() ] 时看到的那样,然后我该如何获得连续秒数?我的意思是自动增加秒数
猜你喜欢
  • 2012-07-17
  • 2016-03-19
  • 1970-01-01
  • 2015-05-25
  • 2015-06-26
  • 2013-07-23
  • 2020-07-11
  • 1970-01-01
  • 2011-04-05
相关资源
最近更新 更多