[英]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-15
或15/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.