如何在 amcharts4 中将时间戳 unix 格式化为日期
How to format timestamp unix into date in amcharts4
我希望将 1555596901
格式化为可读的日期,例如 2019/04/19 11h52。
这是代码:
am4core.useTheme(am4themes_animated);
function createChart(htmlElement){
var chart = am4core.create(htmlElement, am4charts.XYChart);
chart.dateFormatter.dateFormat = "dd/MM/yyyy";
chart.data = [
{
category: "1555596901",
value1: 1,
value2: 5,
value3: 3,
value4: 3
},
{
category: "1555611301",
value1: 10,
value2: 8,
value3: 6,
value4: 4
}
];
chart.cursor = new am4charts.XYCursor();
chart.colors.step = 2;
var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "category";
categoryAxis.renderer.grid.template.location = 0;
categoryAxis.dateFormatter.dateFormat = "dd/MM/yyyy";
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
valueAxis.min = 0;
valueAxis.renderer.minWidth = 35;
var series1 = chart.series.push(new am4charts.ColumnSeries());
series1.columns.template.width = am4core.percent(80);
series1.columns.template.tooltipText = "{name}: {valueY.value}";
series1.name = "Series 1";
series1.dataFields.categoryX = "category";
series1.dataFields.valueY = "value1";
series1.stacked = true;
series1.dateFormatter.dateFormat = "dd/MM/yyyy";
var series2 = chart.series.push(new am4charts.ColumnSeries());
series2.columns.template.width = am4core.percent(80);
series2.columns.template.tooltipText = "{name}: {valueY.value}";
series2.name = "Series 2";
series2.dataFields.categoryX = "category";
series2.dataFields.valueY = "value2";
series2.stacked = true;
series2.dateFormatter.dateFormat = "dd/MM/yyyy";
var series3 = chart.series.push(new am4charts.ColumnSeries());
series3.columns.template.width = am4core.percent(80);
series3.columns.template.tooltipText = "{name}: {valueY.value}";
series3.name = "Series 3";
series3.dataFields.categoryX = "category";
series3.dataFields.valueY = "value3";
series3.stacked = true;
series3.dateFormatter.dateFormat = "dd/MM/yyyy";
var series4 = chart.series.push(new am4charts.ColumnSeries());
series4.columns.template.width = am4core.percent(80);
series4.columns.template.tooltipText = "{name}: {valueY.value}";
series4.name = "Series 4";
series4.dataFields.categoryX = "category";
series4.dataFields.valueY = "value4";
series4.stacked = true;
series4.dateFormatter.dateFormat = "dd/MM/yyyy";
return chart;
}
let chart1 = createChart("chartdiv");
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
#chartdiv {
width: 100%;
height: 300px;
}
<script src="//www.amcharts.com/lib/4/core.js"></script>
<script src="//www.amcharts.com/lib/4/charts.js"></script>
<script src="//www.amcharts.com/lib/4/themes/animated.js"></script>
<div id="chartdiv"></div>
如您所见,它没有格式化时间戳。我在文档中看到我需要使用 chart.dateFormatter.dateFormat = "dd/MM/yyyy";
进行格式化。
您可以通过这样做将 unix 时间戳格式化为 JavaScript 日期对象。
const date1 = new Date(1555596901 * 1000);
console.log(date1);
然后,您可以通过这样做将其格式化为dd/mm/yyyy;
const formatDate = inputDate => {
const date1 = new Date(inputDate * 1000);
let day = date1.getDate();
let month = date1.getMonth() + 1;
const year = date1.getFullYear();
if (day < 10) {
day = '0' + dd;
}
if (month < 10) {
month = '0' + month;
}
const formattedDate = `${day}/${month}/${year}`
return formattedDate;
}
//formatDate(1555596901);
console.log(formatDate(1555596901));
现在,在您的原始代码中,您只需添加上述 formatDate
函数,然后将其映射到您的 chart.data 上,如下所示。
chart.data = [
{
category: "1555596901",
value1: 1,
value2: 5,
value3: 3,
value4: 3
},
{
category: "1555611301",
value1: 10,
value2: 8,
value3: 6,
value4: 4
}
];
const formatDate = inputDate => {
const date1 = new Date(inputDate * 1000);
let day = date1.getDate();
let month = date1.getMonth() + 1;
const year = date1.getFullYear();
if (day < 10) {
day = '0' + dd;
}
if (month < 10) {
month = '0' + month;
}
const formattedDate = `${day}/${month}/${year}`
return formattedDate;
}
chart.data = chart.data.map(element => {
element.category = formatDate(element.category)
return element;
});
console.log(chart.data)
我希望将 1555596901
格式化为可读的日期,例如 2019/04/19 11h52。
这是代码:
am4core.useTheme(am4themes_animated);
function createChart(htmlElement){
var chart = am4core.create(htmlElement, am4charts.XYChart);
chart.dateFormatter.dateFormat = "dd/MM/yyyy";
chart.data = [
{
category: "1555596901",
value1: 1,
value2: 5,
value3: 3,
value4: 3
},
{
category: "1555611301",
value1: 10,
value2: 8,
value3: 6,
value4: 4
}
];
chart.cursor = new am4charts.XYCursor();
chart.colors.step = 2;
var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
categoryAxis.dataFields.category = "category";
categoryAxis.renderer.grid.template.location = 0;
categoryAxis.dateFormatter.dateFormat = "dd/MM/yyyy";
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
valueAxis.min = 0;
valueAxis.renderer.minWidth = 35;
var series1 = chart.series.push(new am4charts.ColumnSeries());
series1.columns.template.width = am4core.percent(80);
series1.columns.template.tooltipText = "{name}: {valueY.value}";
series1.name = "Series 1";
series1.dataFields.categoryX = "category";
series1.dataFields.valueY = "value1";
series1.stacked = true;
series1.dateFormatter.dateFormat = "dd/MM/yyyy";
var series2 = chart.series.push(new am4charts.ColumnSeries());
series2.columns.template.width = am4core.percent(80);
series2.columns.template.tooltipText = "{name}: {valueY.value}";
series2.name = "Series 2";
series2.dataFields.categoryX = "category";
series2.dataFields.valueY = "value2";
series2.stacked = true;
series2.dateFormatter.dateFormat = "dd/MM/yyyy";
var series3 = chart.series.push(new am4charts.ColumnSeries());
series3.columns.template.width = am4core.percent(80);
series3.columns.template.tooltipText = "{name}: {valueY.value}";
series3.name = "Series 3";
series3.dataFields.categoryX = "category";
series3.dataFields.valueY = "value3";
series3.stacked = true;
series3.dateFormatter.dateFormat = "dd/MM/yyyy";
var series4 = chart.series.push(new am4charts.ColumnSeries());
series4.columns.template.width = am4core.percent(80);
series4.columns.template.tooltipText = "{name}: {valueY.value}";
series4.name = "Series 4";
series4.dataFields.categoryX = "category";
series4.dataFields.valueY = "value4";
series4.stacked = true;
series4.dateFormatter.dateFormat = "dd/MM/yyyy";
return chart;
}
let chart1 = createChart("chartdiv");
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
#chartdiv {
width: 100%;
height: 300px;
}
<script src="//www.amcharts.com/lib/4/core.js"></script>
<script src="//www.amcharts.com/lib/4/charts.js"></script>
<script src="//www.amcharts.com/lib/4/themes/animated.js"></script>
<div id="chartdiv"></div>
如您所见,它没有格式化时间戳。我在文档中看到我需要使用 chart.dateFormatter.dateFormat = "dd/MM/yyyy";
进行格式化。
您可以通过这样做将 unix 时间戳格式化为 JavaScript 日期对象。
const date1 = new Date(1555596901 * 1000);
console.log(date1);
然后,您可以通过这样做将其格式化为dd/mm/yyyy;
const formatDate = inputDate => {
const date1 = new Date(inputDate * 1000);
let day = date1.getDate();
let month = date1.getMonth() + 1;
const year = date1.getFullYear();
if (day < 10) {
day = '0' + dd;
}
if (month < 10) {
month = '0' + month;
}
const formattedDate = `${day}/${month}/${year}`
return formattedDate;
}
//formatDate(1555596901);
console.log(formatDate(1555596901));
现在,在您的原始代码中,您只需添加上述 formatDate
函数,然后将其映射到您的 chart.data 上,如下所示。
chart.data = [
{
category: "1555596901",
value1: 1,
value2: 5,
value3: 3,
value4: 3
},
{
category: "1555611301",
value1: 10,
value2: 8,
value3: 6,
value4: 4
}
];
const formatDate = inputDate => {
const date1 = new Date(inputDate * 1000);
let day = date1.getDate();
let month = date1.getMonth() + 1;
const year = date1.getFullYear();
if (day < 10) {
day = '0' + dd;
}
if (month < 10) {
month = '0' + month;
}
const formattedDate = `${day}/${month}/${year}`
return formattedDate;
}
chart.data = chart.data.map(element => {
element.category = formatDate(element.category)
return element;
});
console.log(chart.data)