2016-10-05 1 views
1

Ich möchte die aktuelle Zeit um 5 Minuten erhöhen und sie in this.state.date speichern.wie Minuten in Date() in react-native?

jedoch

this.setState({ 
    date: new Date() + new Date(0,0,0,0,0,5,0), 
}); 

gibt mir einige seltsame Fehler, sagen

`props.date.getTime ist keine Funktion. (In 'props.date.getTime()', 'props.date.getTime' ist nicht definiert)

DatePickerIOS_render DatePickerIOS.ios.js: 125

EDITED: Nach this Beitrag habe ich auch unten versucht,

this.setState({ 
    date: this.state.date.setMinutes((new Date()).getMinutes()+5) 
}); 

aber es gibt mir immer noch die gleiche Fehlermeldung. Wie kann man Date() in react-native korrekt hinzufügen?

Btw, Ich benutze datepickerios in einem anderen Teil der App, und nicht sicher, warum der Fehler zu DatePickerIOS.ios.js in erster Linie verwandt ist. Der andere Teil der App, der das DatePickerIOS verwendet, funktioniert ohne Fehler.

wieder ediert:

Unten ist die volle Funktion. Diese Funktion wird von einem SegmentedControlIOS mit den Werten ['5min von jetzt', '15min von jetzt', '30min von jetzt', 'benutzerdefiniert'] aufgerufen.

_onTimeChange = (event) => { 

    switch (event.nativeEvent.selectedSegmentIndex) { 
     case 0: 
     // 5min 
      return this.setState({ 
       date: this.state.date.setMinutes((new Date()).getMinutes()+5), 
       time: this.state.date.toLocaleTimeString() 
      }); 
     case 1: 
     // 15min 
      return this.setState({ 
       date: this.state.date.setMinutes((new Date()).getMinutes()+15), 
       time: this.state.date.toLocaleTimeString() 
      }); 
     case 2: 
     // 30min 
      return this.setState({ 
       date: this.state.date.setMinutes((new Date()).getMinutes()+30), 
       time: this.state.date.toLocaleTimeString() 
      }); 
     case 3: 
     // show modal with datepicker (this one works fine) 
      return this.setModalVisible(true); 
    } 
    } 

Was passiert: Wenn ich einmal Auswahl aus der segmentierten Steuerung zu ändern, ein gelber Warnbalken mit Requisiten Fehlermeldung wird an der Unterseite meines Simulator gezeigt. Wenn ich die Auswahl erneut ändere, erscheint der rote Bildschirm mit '_this5.state.date.setMinutes ist keine Funktion'.

So sieht es aus wie

date: this.state.date.setMinutes((new Date()).getMinutes()+5) 

Minuten nicht hinzufügen, aber wenn ich es zweimal tun es endet in Fehler auf. Bitte helfen!

+0

Mögliches Duplikat von [Wie 30 Minuten zu einem JavaScript Date-Objekt hinzufügen?] (Http://stackoverflow.com/questions/ 1197928/how-to-add-30-minutes-to-a-javascript-date-object) – Kerumen

+0

Nun, da kam ich auf die Idee von this.state.date.setMinutes ((new Date()). GetMinutes() +5), aber es funktioniert nicht ... –

Antwort

1

Versuchen Sie folgendes:

var d = new Date(); // get current date 
d.setHours(d.getHours(),d.getMinutes()+5,0,0); 

EDIT

var d = new Date(); // get current date 
d.setHours(d.getHours(),d.getMinutes()+5,0,0); 
this.setState(date:d,time:d.toLocaleTimeString()); 
+0

var d = new Date(); ... this.setState ({ Datum: d.setHours (d.getHours(), d.getMinutes() + 5,0,0), Zeit: this.state.date.toLocaleTimeString() }); gibt mir auch Fehler –

+0

Nein, D.setHours gibt kein neues Datum zurück, es ändert die aktuelle Variable. Check out my edit – leo7r

+0

Hmm..interessant. Ich habe var d = new Date(); in _onTimeChange-Funktion und es verursacht 'Maximale Call-Stack-Größe überschritten' Fehler. Ich verwende keine Schleife, aber etwas verursacht jetzt Endlosschleife ... –

Verwandte Themen