我正在try 在Reaction Chart.js折线图上显示此对象的值: 时间的格式为小时、分钟和秒.

  {
    "totaltime": "10:55:41",
    "date": "2018-01-01T00:00:00"
  },
  {
    "totaltime": "339:40:53",
    "date": "2019-01-01T00:00:00"
  },
  {
    "totaltime": "227:25:42",
    "date": "2020-01-01T00:00:00"
  },
  {
    "totaltime": "286:40:01",
    "date": "2021-01-01T00:00:00"
  },
]

然后,我使用此函数将时间值添加到折线图组件:

function getChartData(documents, label, color) {

  return {
    labels: documents.map((document) => document.date),
    datasets: [
      {
        label: label,
        data: documents.map((document) => document.totaltime),
        backgroundColor: color,
        borderColor: color,
        borderWidth: 1,
      },
    ],
  };
}

但是,X轴上只显示日期,不显示任何数据.如果我将Date对象的值更改为秒,它们将完美显示,但我希望用户以小时和分钟而不是秒来查看数据.

我try 以秒为单位发送数据,然后使用Chart.js选项使用Date-FNS库将输出格式化为小时和分钟,但这些值从未更改过,仍然是秒.

推荐答案

下面是处理转换和格式化的getChartData函数的更新版本:

function formatTime(totalTime) {
  const hours = Math.floor(totalTime / 3600);
  const minutes = Math.floor((totalTime % 3600) / 60);
  const seconds = totalTime % 60;

  return `${hours.toString().padStart(2, '0')}:${minutes
    .toString()
    .padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}

function getChartData(documents, label, color) {
  const chartData = {
    labels: [],
    datasets: [
      {
        label: label,
        data: [],
        backgroundColor: color,
        borderColor: color,
        borderWidth: 1,
      },
    ],
  };

  documents.forEach((document) => {
    const timeComponents = document.totaltime.split(':');
    const hours = parseInt(timeComponents[0]);
    const minutes = parseInt(timeComponents[1]);
    const seconds = parseInt(timeComponents[2]);

    // Calculate the total time in seconds
    const totalTimeInSeconds = hours * 3600 + minutes * 60 + seconds;

    // Format the time as hours:minutes:seconds
    const formattedTime = formatTime(totalTimeInSeconds);

    chartData.labels.push(formattedTime);
    chartData.datasets[0].data.push(totalTimeInSeconds);
  });

  return chartData;
}

Javascript相关问答推荐

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

如何修复循环HTML元素附加函数中的问题?

没有输出到带有chrome.Devtools扩展的控制台

docx.js:如何在客户端使用文档修补程序

当作为表达式调用时,如何解析方法decorator 的签名?

阿波罗返回的数据错误,但在网络判断器中是正确的

不能将空字符串传递给cy.containes()

类构造函数忽略Reaction Native中的可选字段,但在浏览器中按预期工作

如何在Bootstrap中减少网格系统中单个div的宽度

当代码另有说明时,随机放置的圆圈有时会从画布上消失

如何防止ionic 输入中的特殊字符.?

第一项杀死下一项,直到数组长度在javascript中等于1

将范围 Select 器添加到HighChart面积图

在JS/TS中将复杂图形转换为数组或其他数据 struct

P5JS-绘制不重叠的圆

如果对象中的字段等于某个值,则从数组列表中删除对象

通过解构/功能组件接收props-prop验证中缺少错误"

我无法在Api Reaction本机上发出GET请求

JQuery使用选项填充HTMLSELECT并设置默认结果,默认结果显示为空

我想为我的Reaction项目在画布上加载图像/视频,图像正在工作,但视频没有