如何将时间戳转换为 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);