我有以下场景我会被返回一组次,但是想重新格式化它们,然后减去它们以获得一个新的时间对象并在我返回之前将该对象推送到我的列表中。
我在行动中尝试过以下但没有运气。我需要遍历整个列表。
Output.json
{
"tatt": {
"tmst": "2017-03-19T20:18:36",
"errCd": "0",
"errNm": null,
"eta": [{
"prdt": "2017-03-19T20:18:19",
"arrT": "2017-03-19T20:24:19",
}, {
"prdt": "2017-03-19T20:18:06",
"arrT": "2017-03-19T20:25:06",
}, {
"prdt": "2017-03-19T20:17:54",
"arrT": "2017-03-19T20:28:54",
}]
}
}
action.js
import axios from "axios";
function transformDateFormat(json) {
const arrival = {
...json,
date: json.data.ctatt.eta[0].arrT.substring(json.data.ctatt.eta[0].arrT.indexOf("T") + 1)
}
console.log(arrival)
return arrival;
}
export const fetchTime = () => {
return function(dispatch, getState) {
axios.get('/data/output.json')
.then(transformDateFormat)
.then((response) => {
dispatch({type: "FETCH_FULFILLED", payload: response.data.ctatt.eta})
})
.catch((err) => {
dispatch({type: "FETCH_REJECTED", payload: err})
})
}
}
创造新时间的逻辑;
var date1 = "2017-03-18T21:28:53";
var date2 = "2017-03-18T21:27:53";
date1 = date1.substring(date1.indexOf("T") + 1);
date2 = date2.substring(date2.indexOf("T") + 1);
function parseTime(s) {
var c = s.split(':');
return parseInt(c[0]) * 60 + parseInt(c[1]);
}
var minutes = parseTime(date1) - parseTime(date2);
console.log(minutes + " min")
更新
所以我能够解决这个问题,但只有在它通过我的组件返回并且我在那里进行操作之后。不确定这是否是正确的方法...任何见解都会有所帮助。