2016-08-29 10 views
0

Ich modifiziere Angular UI Bootstrap Datepicker für eine Woche Auswahlmodus zu ermöglichen. Damit dies effektiv funktioniert, muss ich auf den ersten Sonntag einer bestimmten Woche setzen. Wenn Sie also ein Datum auswählen, z. B. einen Montag wie den 29.08.2016, wird Ihre Auswahl in den früheren Sonntag 8 konvertiert/28/16.Moment.JS Holen Sie sich den Sonntag vor einem bestimmten Datum

So sieht die Auswahlfunktion aus. Wenn Interesse an der Umwandlung in Sonntag Logik im else if Block, wo die Warnung übereinstimmt.

$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'); 
    }; 

Ich verwende moment.js kann aber in ihren Dokumenten nicht herausfinden, wie es zu tun. Eine Vanilla JS Antwort würde auch geschätzt werden. date, die an die Funktion übergeben wird, ist ein Datumsobjekt.

Moment docs vorschlagen entweder:

moment().day(-7);

oder

moment().weekday(-7);

aber ich bin ein Datum-Objekt übergeben, nicht einen Moment ... so kann ich konvertieren oder eine Kette oder etwas ? Sorry ein bisschen verwirrt ... Ich muss auch ein Datum Objekt self.activeDate

Antwort

3

zurückgeben Um den letzten Sonntag von einem bestimmten Moment zu erhalten, einfach day() in diesem Moment zusammen mit dem Namen der Tage verwenden.

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

Wenn Sie ein Date Objekt haben, einfach analysieren sie als Moment

moment(new Date()); 
+0

Bitte beachten Sie Änderungen auf meine Frage, verstehe ich den Teil, den Sie beschrieben habe, aber ich bin weder beiläufig noch zurückkehrt oder ein Moment Wie würde ich in diesem Fall moment.js als Vermittler zwischen zwei Datumsobjekten verwenden, wenn das korrekt ist? –

+0

Warum als Zwischenprodukt? Nutzen Sie den Moment, wenn Sie mit Daten arbeiten, es ist viel bequemer über js "Date" @SummerDeveloper – baao

Verwandte Themen