关于javascript:关于moment的自定义时间快捷选项及值的回填

应用场景:工夫默认值可选用 指定默认值 或 工夫快捷选项。指定默认值是用户选定的某个固定工夫,工夫快捷选项是绝对于关上利用的工夫,并非固定工夫,如选中了昨天,在8月20日关上利用时,工夫回显8月19日,在9月30日关上利用时,工夫回显9月29日。且这两种默认值的可用状态是互斥的,只可二选一。
此处只列举格局为YYYYMMDD(年月日)的状况


单个工夫点的配置场景

抉择固定默认值

抉择快捷选项

工夫区间的配置场景

固定默认值

抉择快捷选项


回显实现形式:

// isRange 是否是工夫区间
// timeSize 工夫粒度(精确度) Y-年 M-月 w-周 D-日
// previousNumber 工夫区间 近*天(周/月/年)
// hasThisYear 工夫区间 是否蕴含当天(本周/本月/本年)
let defaultValue    // 要回填的最终值
let date1   // 工夫区间 蕴含当天(本周/本月/本年)
let date2   // 工夫区间 不蕴含当天(本周/本月/本年)

if (!isRange) {
  switch (timeSize) {
    case 'Y':
      defaultValue = moment().year(moment().year() - 1).startOf('year') // 去年
      break
    case 'M':
      defaultValue = moment().month(moment().month() - 1).startOf('month') // 上月
      break
    case 'w':
      defaultValue = moment().week(moment().week() - 1).startOf('week') // 上周
      break
    case 'D':
      defaultValue = moment().subtract(1, 'days') // 昨天
      break
    default:
      defaultValue = moment().subtract(1, 'days')
      break
  }
} else {
  switch (timeSize) {
    case 'Y':
      date1 = [moment().year(moment().year() - previousNumber + 1).startOf('year'), moment().endOf('year')]
      date2 = [moment().year(moment().year() - previousNumber).startOf('year'), moment().year(moment().year() - 1).endOf('year')]
      break
    case 'M':
      date1 = [moment().month(moment().month() - previousNumber + 1).startOf('month'), moment().endOf('month')]
      date2 = [moment().month(moment().month() - previousNumber).startOf('month'), moment().month(moment().month() - 1).endOf('month')]
      break
    case 'w':
      date1 = [moment().week(moment().week() - previousNumber + 1).startOf('week'), moment().endOf('week')]
      date2 = [moment().week(moment().week() - previousNumber).startOf('week'), moment().week(moment().week() - 1).endOf('week')] 
      break
    case 'D':
      date1 = [moment().subtract(previousNumber - 1, 'days'), moment()]
      date2 = [moment().subtract(previousNumber, 'days'), moment().subtract(1, 'days')]
      break
    default:
      date1 = [moment().subtract(previousNumber - 1, 'days'), moment()]
      date2 = [moment().subtract(previousNumber, 'days'), moment().subtract(1, 'days')]
      break
  }
  // 蕴含当天,取date1;不蕴含当天,取date2
  defaultValue = hasThisYear ? date1 : date2
}

之后回填defaultValue到工夫组件中便可

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理