我正在使用图表来将一些时间序列数据显示为折线图。我需要显示的数据带有UTC时间戳,因此我将highcharts配置为使用UTC。当我使用highcharts集成日期格式器时,此方法效果很好,但我需要在折线图的X轴上显示时间标签,并根据用户设置的语言环境显示不同的格式。因此,我必须实现一个可以注入到highcharts中的自定义标签格式化程序。为此,我使用angular的DatePipe将时间戳格式化为所需格式。
formatter: function () {
let format = 'HH:mm'; // default format
if (!!culture) {
format = culture[this.dateTimeLabelFormat]; // dictionary with formats for various cultures
}
var dp = new DatePipe(locale); // e.g. 'en','de','fr'
return dp.transform(this.value,format,'UTC'); // this.values is an UTC timestamp e.g. 1573807971000
}
该代码非常有效,但有一个例外-> 夏时制。我希望通过使用utc来避免此问题,但是在2019年3月31日,即使我将DatePipe配置为UTC作为时区,DatePipe也会将UTC的时间戳从02:00 AM格式化为03:00 AM。
这就是折线图的X轴的显示方式(注意03:00已重复):
https://stackblitz.com/edit/angular-zj1xwv
无论时区如何,如何格式化UTC时间?