如何解决React.JS 中两个日期之间的天数差使用 moment
我做了一个函数来计算两个日期之间的差异,但我不知道如何使用输入来获取(?)数据。我还尝试了 return diffInDays; 而不是使用 this.setState({ diffInDays: diffInDays })。我尝试了很多组合,但没有一个给我正确的结果。
library(dplyr)
library(caret)
library(xgboost)
set.seed(777)
dat = data.frame(F1 = sample(letters[1:4],100,replace = TRUE),F2 = sample(letters[5:8],X1 = rnorm(100,5,2),X2 = rnorm(100,10,id = 1:100,stringsAsFactors = TRUE)
# 1) create 70/30 split train/test#
indexes = createDataPartition(dat$id,times = 1,p = 0.7,list = FALSE)
dat.train = dat[indexes,]
dat.test = dat[-indexes,]
# 2) create normalized (0,1) x variables#
dat.train.trnsform = dat.train
dat.test.trnsform = dat.test
preprocessXs.train = preProcess(dat.train.trnsform[,3:4],method=c("range"))
preprocessXs.test = preProcess(dat.test.trnsform[,method=c("range"))
dat.train.trnsform[,3:4] = predict(preprocessXs.train,dat.train.trnsform[,3:4])
dat.test.trnsform[,3:4] = predict(preprocessXs.test,dat.test.trnsform[,3:4])
# 3) create y variable which is average of X1 and X2#
dat.train.trnsform$Y = rowMeans(dat.train.trnsform[,3:4])
dat.test.trnsform$Y = rowMeans(dat.test.trnsform[,3:4])
# 4) classify y_bucket variable based on distribution > M + 1sigma = "High" < M - 1sigma = "low" else "core"#
upper.thresh.train = mean(dat.train.trnsform$Y) + sd(dat.train.trnsform$Y)
upper.thresh.test = mean(dat.test.trnsform$Y) + sd(dat.test.trnsform$Y)
lower.thresh.train = mean(dat.train.trnsform$Y) - sd(dat.train.trnsform$Y)
lower.thresh.test = mean(dat.test.trnsform$Y) - sd(dat.test.trnsform$Y)
dat.train.trnsform$Y_bucket = NA
dat.train.trnsform$Y_bucket[which(dat.train.trnsform$Y > upper.thresh.train)] = "high"
dat.train.trnsform$Y_bucket[which(dat.train.trnsform$Y < lower.thresh.train)] = "low"
dat.train.trnsform$Y_bucket[is.na(dat.train.trnsform$Y_bucket)] = "core"
dat.test.trnsform$Y_bucket = NA
dat.test.trnsform$Y_bucket[which(dat.test.trnsform$Y > upper.thresh.test)] = "high"
dat.test.trnsform$Y_bucket[which(dat.test.trnsform$Y < lower.thresh.test)] = "low"
dat.test.trnsform$Y_bucket[is.na(dat.test.trnsform$Y_bucket)] = "core"
# 5) set up caret to perform 10-fold cross validation repeated 3 times
train.control <- trainControl(method = "repeatedcv",number = 10,repeats = 3)
# 6) fit model
caret.cv <- train(Y_bucket ~ F1 + F2,data = dat.train.trnsform,method = "xgbTree",trControl = train.control,na.action = na.omit)
# 7) get the confusion matrix#
preds <- predict(caret.cv,dat.test.trnsform)
confusion_ma = confusionMatrix(preds,as.factor(dat.test.trnsform$Y_bucket))
这些是我创建的输入:
- 这是一个开始
value=data.MeetingDate;
- 这个是为了结束
calculate(dateFrom,dateTo) {
if (!dateFrom || !dateTo) {
return null;
}
const arrival = moment(dateFrom);
const departure = moment(dateTo);
if (arrival.isAfter(departure)) {
return null;
}
const diffInDays = departure
.endOf('day')
.diff(arrival.startOf('day'),'days');
return diffInDays;
}
- 这是我想看到的不同之处
<div className="form-group">
<label htmlFor="dateFrom">Date From: </label>
<input
type="date"
className="form-control"
id="dateFrom"
onChange={this.onChangeDateFrom}
value={this.state.dateFrom}
name="dateFrom"
/>
</div>
选择日期工作正常。他们也保存在MongoDB中,只是天差出现问题。
解决方法
你应该使用
departure.diff(arrival)
并且只获得日差
departure.diff(arrival,'days')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。