【问题标题】:Moment.JS Get The Sunday Before A Given DateMoment.JS 获取给定日期之前的星期日
【发布时间】:2016-08-29 19:45:03
【问题描述】:

我正在修改 Angular 的 UI Bootstrap Datepicker 以允许一周选择模式。为了使它有效地工作,我需要将activeDate 设置为给定一周的第一个星期日,所以如果您选择一个日期,比如 2016 年 8 月 29 日这样的星期一,它会将您的选择转换为较早的星期日,2016 年 8 月 28 日。

这就是选择函数的样子。如果对在警报匹配的else if 块中转换为星期日逻辑感兴趣。

$scope.select = function(date) {
    if ($scope.datepickerMode === self.minMode) {
      var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.timezone) : new Date(0, 0, 0, 0, 0, 0, 0);
      dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
      dt = dateParser.toTimezone(dt, ngModelOptions.timezone);
      ngModelCtrl.$setViewValue(dt);
      ngModelCtrl.$render();
    } 

    else if($scope.datepickerMode =="week")
      {
        alert("Match!");
        self.activeDate = date.firstSundayofthatweek() //what do I actually put here using Moment.js?
       setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);
      $scope.$emit('uib:datepicker.mode');
      }

    else {
      self.activeDate = date;
      setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);
      $scope.$emit('uib:datepicker.mode');
    }

    $scope.$broadcast('uib:datepicker.focus');
  };

我正在使用 moment.js,但无法在他们的文档中弄清楚如何做到这一点。香草JS答案也将不胜感激。传递给函数的date 是一个日期对象。

Moment 文档建议:

moment().day(-7);

moment().weekday(-7);

但我传递的是一个日期对象,而不是片刻......所以我要转换或链接还是什么?抱歉有点困惑...我还需要将日期对象返回给self.activeDate

【问题讨论】:

    标签: javascript


    【解决方案1】:

    要获取给定时刻的最后一个星期日,只需在该时刻使用 day() 以及日期名称即可。

    var today = moment("29.08.2016", "DD.MM.YYYY");
    var sunday = today.day("Sunday");
    console.log(sunday.format("YYYY-MM-DD"));
    

    如果您有 Date 对象,只需将其解析为时刻

    moment(new Date());
    

    【讨论】:

    • 请查看对我的问题的修改,我理解您概述的部分,但我既不通过也不返回或片刻,所以在这种情况下我将如何利用 moment.js 作为中间人两个日期对象,如果正确的话?
    • 为什么是中间人?处理日期时利用时刻,比 js 的 Date @SummerDeveloper 方便得多
    【解决方案2】:

    Moment 使用星期日作为一周的第一天:

    const lastSunday = currentDate => {
      const date = moment(currentDate).startOf('week');
      return date._d;
    };
    

    【讨论】:

      猜你喜欢
      • 2018-06-12
      • 2017-12-08
      • 1970-01-01
      • 2017-07-19
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 2021-10-23
      相关资源
      最近更新 更多