如何将时间戳转换为 UTCString 并防止浏览器将日期更改为本地时区?
How can I convert timestamps toUTCString and prevent browser changing the date to local timezone?
我有一个充满时间戳的数组,例如:
let tAxe = [1548546272000, 1548546287000, 1548546303000, 1548546318000, 1548546333000];
我正在尝试将每个时间戳转换为人类可读的日期。我可以阻止浏览器将此日期转换为当前时区吗?此 tAxe 变量在 amChart4 库中用于生成图形。
我正在考虑循环,但不确定如何准确编写代码
for (i = 0; i < tAxe.length; i++) {
// I don't know how to write exactly the conversion
}
您只需将 dateFormatter.utc
设置为 true,amCharts 将为您完成剩下的工作:
chart.dateFormatter.utc = true;
这是一个使用您分享的时间戳的示例:
am4core.useTheme(am4themes_animated);
var chart = am4core.create("chartdiv", am4charts.XYChart);
chart.dateFormatter.utc = true;
chart.data = [
{date:1548546272000, value: 12},
{date:1548546287000, value: 15},
{date:1548546303000, value: 13},
{date:1548546318000, value: 17},
{date:1548546333000, value: 14},
];
var dateAxis = chart.xAxes.push(new am4charts.DateAxis());
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
var series = chart.series.push(new am4charts.LineSeries());
series.dataFields.valueY = "value";
series.dataFields.dateX = "date";
#chartdiv {
width: 100%;
height: 500px;
}
<script src="https://www.amcharts.com/lib/4/core.js"></script>
<script src="https://www.amcharts.com/lib/4/charts.js"></script>
<script src="https://www.amcharts.com/lib/4/themes/animated.js"></script>
<div id="chartdiv"></div>
Here是个代码笔,也是示例。
您可以使用 moment.js。
Windows 文件时间使用 1601 年 1 月 1 日的纪元。JavaScript 日期使用 1970 年 1 月 1 日。您需要相应地调整值。
由于所有 JavaScript 数字都是 IEEE 浮点数,当您开始使用这么大的值时,可能会出现舍入错误。这可以通过截断字符串而不是除法来避免。
var s = "130459385299470000";
var t = +s.substring(0, s.length-4);
var e = Date.UTC(1601,0,1);
var dt = new Date(e + t);
我有一个充满时间戳的数组,例如:
let tAxe = [1548546272000, 1548546287000, 1548546303000, 1548546318000, 1548546333000];
我正在尝试将每个时间戳转换为人类可读的日期。我可以阻止浏览器将此日期转换为当前时区吗?此 tAxe 变量在 amChart4 库中用于生成图形。
我正在考虑循环,但不确定如何准确编写代码
for (i = 0; i < tAxe.length; i++) {
// I don't know how to write exactly the conversion
}
您只需将 dateFormatter.utc
设置为 true,amCharts 将为您完成剩下的工作:
chart.dateFormatter.utc = true;
这是一个使用您分享的时间戳的示例:
am4core.useTheme(am4themes_animated);
var chart = am4core.create("chartdiv", am4charts.XYChart);
chart.dateFormatter.utc = true;
chart.data = [
{date:1548546272000, value: 12},
{date:1548546287000, value: 15},
{date:1548546303000, value: 13},
{date:1548546318000, value: 17},
{date:1548546333000, value: 14},
];
var dateAxis = chart.xAxes.push(new am4charts.DateAxis());
var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
var series = chart.series.push(new am4charts.LineSeries());
series.dataFields.valueY = "value";
series.dataFields.dateX = "date";
#chartdiv {
width: 100%;
height: 500px;
}
<script src="https://www.amcharts.com/lib/4/core.js"></script>
<script src="https://www.amcharts.com/lib/4/charts.js"></script>
<script src="https://www.amcharts.com/lib/4/themes/animated.js"></script>
<div id="chartdiv"></div>
Here是个代码笔,也是示例。
您可以使用 moment.js。 Windows 文件时间使用 1601 年 1 月 1 日的纪元。JavaScript 日期使用 1970 年 1 月 1 日。您需要相应地调整值。
由于所有 JavaScript 数字都是 IEEE 浮点数,当您开始使用这么大的值时,可能会出现舍入错误。这可以通过截断字符串而不是除法来避免。
var s = "130459385299470000";
var t = +s.substring(0, s.length-4);
var e = Date.UTC(1601,0,1);
var dt = new Date(e + t);