2016-10-05 34 views
1

我想將5分鐘添加到當前時間並將其存儲到this.state.date。如何在react-native中添加Date()的分鐘數?

然而,

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

給了我一些奇怪的錯誤,說

`props.date.getTime不是一個函數。 (在 'props.date.getTime()', 'props.date.getTime' 是未定義)

DatePickerIOS_render DatePickerIOS.ios.js:125

EDITED:根據this交我也低於試過,

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

但它仍然給我相同的錯誤信息。在react-native中爲Date()添加分鐘的正確方法是什麼?

順便說一句,我在應用程序的另一部分使用了datepickerios,不知道爲什麼錯誤與DatePickerIOS.ios.js首先相關。實際使用DatePickerIOS的應用程序的另一部分工作正常,沒有錯誤。

再次編輯:

下面是完整的功能。這個函數是從一個SegmentedControlIOS中調用的,它的值是['從現在開始5min','從現在開始15min','從現在開始30min','自定義']。

_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); 
    } 
    } 

會發生什麼:如果我從分段控制更改選擇一次,道具的錯誤消息的黃色警告條顯示在我的模擬器的底部。如果我再次更改選擇,則紅色屏幕顯示'_this5.state.date.setMinutes不是函數'。

所以看起來

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

確實增加分鐘,但是當我做了兩次它在錯誤結束。 請幫忙!

+0

的可能的複製[如何增加30分鐘的一個JavaScript Date對象?(http://stackoverflow.com/questions/ 1197928/how-to-add-30-minutes-to-javascript-date-object) – Kerumen

+0

那麼,這就是我對this.state.date.setMinutes((new Date())的看法。getMinutes() +5),但它不起作用... –

回答

1

試試這個:

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

編輯

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({ 日期:d.setHours(d.getHours(),d.getMinutes()+ 5,0,0), 時間:this.state.date.toLocaleTimeString() } );也給我錯誤 –

+0

不,d.setHours不會返回一個新的日期,它會修改當前的變量。看看我的編輯 – leo7r

+0

嗯..有趣。我已經把var d = new Date();到_onTimeChange函數中,並導致「超出最大調用堆棧大小」錯誤。我沒有使用循環,但現在造成無限循環... –

相關問題