使用MomentJS的这段日期格式代码有什么问题?

trurohit:

下面的代码是不言自明的,但无法正常工作。如果相差0天,则返回“ 0y ago”

const formatTime = (time) => {
    const dayDiff = moment().diff(moment(time), 'days')

    switch (dayDiff) {
        case dayDiff == 0:
            return `${moment().diff(moment(time), 'hours')}h ago`
        case dayDiff > 0 && dayDiff < 31:
            return `${moment().diff(moment(time), 'days')}d ago`
        case dayDiff > 31 && dayDiff < 365:
            return `${moment().diff(moment(time), 'months')}m ago`
        default:
            return `${moment().diff(moment(time), 'years')}y ago`
    }
}

如果时间在同一天,那么它将在默认情况下结束,而该情况应在第一种情况下结束并返回“ 0h ago”。

我可能错过了一些小事。任何帮助将非常感激。

epascarello:

开关用于与值进行比较。为了使您的代码正常工作,必须

switch(true) {
  case dayDiff == 0:
  ....
}

但这是在开关中使用条件语句的不良做法,仅使用if语句

const formatTime = time => {
  const dayDiff = moment().diff(moment(time), 'days')
  if (dayDiff == 0) {
    return `${moment().diff(moment(time), 'hours')}h ago`
  } else if (dayDiff < 31) {
    return `${moment().diff(moment(time), 'days')}d ago`
  } else if (dayDiff < 365) {
    return `${moment().diff(moment(time), 'months')}m ago`
  } else {
    return `${moment().diff(moment(time), 'years')}y ago`
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章