根据当前 'day' 是什么,在工作日之后动态呈现
Dynamically render following weekdays depending on what the current 'day' is
我正在创建数据可视化,并试图让第 2-7 天根据当天动态呈现。
获取当天的动态函数正在运行,并保存为名为 'day' 的变量。但是,我不知道根据 'day' 变量是什么,在我的 google 图表中使用什么逻辑来创建以下工作日。
// Temporary array of placeholder dates for the last 9 days
let tempArray = [{time: "2020-11-28T04:13:30.000Z", value: 30},
{time: "2020-11-27T04:13:40.000Z", value: 77},
{time: "2020-11-26T04:13:50.000Z", value: 96},
{time: "2020-11-25T04:14:00.000Z", value: 64},
{time: "2020-11-24T04:14:10.000Z", value: 58},
{time: "2020-11-23T04:14:20.000Z", value: 45},
{time: "2020-11-22T04:14:30.000Z", value: 24},
{time: "2020-11-21T04:14:40.000Z", value: 19},
{time: "2020-11-20T04:14:50.000Z", value: 44},
{time: "2020-11-19T04:15:00.000Z", value: 49}]
// Function to turn ISO date format into an integer from 0-6 to get the day
function getDayWeek(timeData, i){
let date = timeData[i].time
switch (new Date(date).getDay()) {
case 0:
day = "Sun";
break;
case 1:
day = "Mon";
break;
case 2:
day = "Tue";
break;
case 3:
day = "Wed";
break;
case 4:
day = "Thu";
break;
case 5:
day = "Fri";
break;
case 6:
day = "Sat";
}
}
...
// Render Google Chart
function drawChart(dayData) {
...
// Fires function
getDayWeek(tempArray, 0)
// Graph row render
// 'day' variable returns Sat
// Code is missing the logic/function for dynamically rendering the following days
let color = '#2196F3'
var data = google.visualization.arrayToDataTable([
["Day", "Battery", { role: "style" } ],
[day, data1, '#B33D3C'],
[day2, data2, color],
[day3, data3, color],
[day4, data4, color],
[day5, data5, color],
[day6, data6, color],
[day7, data7, color],
]);
...
}
那么,如何根据当前 'day' 动态呈现接下来的工作日?
如果您需要我进一步解释,请告诉我。
正如我在评论中告诉您的那样,使用 momentJS 非常好。这一个或另一个日期库但不是原生 JS Date
一些入门示例
const now = moment();
const now_as_date = now.toDate(); // give a valid JS Date
const dayName = now.format('dddd');
const aDate = moment('2020-11-28T04:13:30.000Z');
//clone to not modify the aDate, important !
const previousDay = aDate.clone().add(-1, 'day');
const fourDaysLater = aDate.clone().add(4, 'days');
这是您的使用方法
function drawChart(dayData) {
//You have a date somewhere, you use it with getDayWeek but I don't see it in the provided code
//let's put something
var date = new Date('2020-11-19T04:15:00.000Z');
const dataTable = ["Day", "Battery", { role: "style" } ];
new Array(7).fill().forEach( (e, i) => {
const day = moment(date).add(i, 'days').format('ddd');
//Where does data1,data2, come from?
const data = '??';
const color = (i===0) ? '#2196F3' : '#B33D3C';
dataTable.push([day, data, color])
});
var data = google.visualization.arrayToDataTable(dataTable);
}
您可以添加 day worth of milli seconds
以获得下一个日期。
const followingDays = (dateStr) => {
const msInDay = 24 * 60 * 60 * 1000;
return new Array(7)
.fill(0)
.map((_, i) =>
new Date(new Date(dateStr).getTime() + i * msInDay).toDateString()
);
};
console.log(followingDays((new Date().toString())));
console.log(followingDays('2020-11-24'));
我正在创建数据可视化,并试图让第 2-7 天根据当天动态呈现。
获取当天的动态函数正在运行,并保存为名为 'day' 的变量。但是,我不知道根据 'day' 变量是什么,在我的 google 图表中使用什么逻辑来创建以下工作日。
// Temporary array of placeholder dates for the last 9 days
let tempArray = [{time: "2020-11-28T04:13:30.000Z", value: 30},
{time: "2020-11-27T04:13:40.000Z", value: 77},
{time: "2020-11-26T04:13:50.000Z", value: 96},
{time: "2020-11-25T04:14:00.000Z", value: 64},
{time: "2020-11-24T04:14:10.000Z", value: 58},
{time: "2020-11-23T04:14:20.000Z", value: 45},
{time: "2020-11-22T04:14:30.000Z", value: 24},
{time: "2020-11-21T04:14:40.000Z", value: 19},
{time: "2020-11-20T04:14:50.000Z", value: 44},
{time: "2020-11-19T04:15:00.000Z", value: 49}]
// Function to turn ISO date format into an integer from 0-6 to get the day
function getDayWeek(timeData, i){
let date = timeData[i].time
switch (new Date(date).getDay()) {
case 0:
day = "Sun";
break;
case 1:
day = "Mon";
break;
case 2:
day = "Tue";
break;
case 3:
day = "Wed";
break;
case 4:
day = "Thu";
break;
case 5:
day = "Fri";
break;
case 6:
day = "Sat";
}
}
...
// Render Google Chart
function drawChart(dayData) {
...
// Fires function
getDayWeek(tempArray, 0)
// Graph row render
// 'day' variable returns Sat
// Code is missing the logic/function for dynamically rendering the following days
let color = '#2196F3'
var data = google.visualization.arrayToDataTable([
["Day", "Battery", { role: "style" } ],
[day, data1, '#B33D3C'],
[day2, data2, color],
[day3, data3, color],
[day4, data4, color],
[day5, data5, color],
[day6, data6, color],
[day7, data7, color],
]);
...
}
那么,如何根据当前 'day' 动态呈现接下来的工作日?
如果您需要我进一步解释,请告诉我。
正如我在评论中告诉您的那样,使用 momentJS 非常好。这一个或另一个日期库但不是原生 JS Date
一些入门示例
const now = moment();
const now_as_date = now.toDate(); // give a valid JS Date
const dayName = now.format('dddd');
const aDate = moment('2020-11-28T04:13:30.000Z');
//clone to not modify the aDate, important !
const previousDay = aDate.clone().add(-1, 'day');
const fourDaysLater = aDate.clone().add(4, 'days');
这是您的使用方法
function drawChart(dayData) {
//You have a date somewhere, you use it with getDayWeek but I don't see it in the provided code
//let's put something
var date = new Date('2020-11-19T04:15:00.000Z');
const dataTable = ["Day", "Battery", { role: "style" } ];
new Array(7).fill().forEach( (e, i) => {
const day = moment(date).add(i, 'days').format('ddd');
//Where does data1,data2, come from?
const data = '??';
const color = (i===0) ? '#2196F3' : '#B33D3C';
dataTable.push([day, data, color])
});
var data = google.visualization.arrayToDataTable(dataTable);
}
您可以添加 day worth of milli seconds
以获得下一个日期。
const followingDays = (dateStr) => {
const msInDay = 24 * 60 * 60 * 1000;
return new Array(7)
.fill(0)
.map((_, i) =>
new Date(new Date(dateStr).getTime() + i * msInDay).toDateString()
);
};
console.log(followingDays((new Date().toString())));
console.log(followingDays('2020-11-24'));