簡體   English   中英

如何在 React Native State 中添加或減去 Moment JS 值?

[英]How can I add or subtract on Moment JS value in React Native State?

所以我的問題是如何讓我的狀態(日期)從中添加或減去值。

我說的是 React Native App,我在其中使用 Moment.js。


state = {
    date: this.props.navigation.getParam("date")
  };

這是我的日期狀態,它正確顯示了它傳遞的 React-Navigation 並且它工作正常。

  dateBackHandler=()=>{
    Moment(this.state.date).subtract(1, "d")
  }

  dateForwardHandler=()=>{
    Moment(this.state.date).add(1, "d")
  }

這是我的 2 個操作狀態的函數,應該從中添加或減去一天。

我的問題是我收到錯誤:

棄用警告:提供的值不是公認的 RFC2822 或 ISO 格式。 moment 構造回退到 js Date(),這在所有瀏覽器和版本中都不可靠。

我點擊了鏈接並閱讀了 Moment.js 文檔。

我需要一種在當前狀態下調用函數的方法。

編輯:有人知道我的 setState 在函數內部應該是什么樣子嗎?

編輯:通過傳遞沒有格式的日期,我的功能實際上可以工作,它們會更改日期,但由於顯示的格式,它看起來很難看。

這不是錯誤,而是警告。 問題是this.state.date的格式是那一刻無法識別的。 以 ISO 格式(IE 2019-04-15T00:00:00Z )發送一些東西。 諸如19-04-1515/04/2019之類的內容19-04-15不是有效值)

警告是關於你傳遞給 moment 的日期格式,即this.state.date的格式是 moment 無法識別的,所以當將 this.state.date 傳遞給 moment 時,也將日期格式連同它一起傳遞為逗號分隔. 例如: moment('17-04-19',"DD-MM-YY")

在您的代碼中測試以下console.log

 console.log(moment('17-04-19',"DD-MM-YY").subtract(1, "d").format('DD-MM-YY')); 
 // this will print --> 16-04-19

因此,您的函數可能需要更改以從 state.date 格式中獲取有效的日期格式,如下所示:

 dateBackHandler=()=> {
   Moment(this.state.date, "DD-MM-YY").subtract(1, "d") // assuming your state.date is in format "DD-MM-YY"
 }

 dateForwardHandler=()=>{
   Moment(this.state.date, "DD-MM-YY").add(1, "d") // assuming your state.date is in format "DD-MM-YY"
 }

希望這可以幫助!

您可以將日期格式更改為兼容格式,然后將其改回您需要的格式:

moment(moment(this.state.date).add(5,'d').format('YYYY-MM-DD')).format('YYYY-MM-DD')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM