Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置Google图表日期时间轴标签的时区格式_Javascript_Timezone_Google Visualization - Fatal编程技术网

Javascript 设置Google图表日期时间轴标签的时区格式

Javascript 设置Google图表日期时间轴标签的时区格式,javascript,timezone,google-visualization,Javascript,Timezone,Google Visualization,我正在使用谷歌图表沿一个轴绘制一个带有“datetime”类型的折线图。我想格式化轴标签,使其显示指定时区的时间,而不是默认的浏览器时区 通过阅读文档,可以为一个对象提供“时区”选项,然后使用相应的DataTable和列调用该对象,以格式化该列中的所有单元格。我注意到,如果将DataTable绘制为表,那么这样做会导致正确格式化的值。但是,这种格式不适用于图表上的轴标签,例如折线图或条形图 这是我的密码: var dataTable = new google.visualization.Data

我正在使用谷歌图表沿一个轴绘制一个带有“datetime”类型的折线图。我想格式化轴标签,使其显示指定时区的时间,而不是默认的浏览器时区

通过阅读文档,可以为一个对象提供“时区”选项,然后使用相应的
DataTable
和列调用该对象,以格式化该列中的所有单元格。我注意到,如果将
DataTable
绘制为表,那么这样做会导致正确格式化的值。但是,这种格式不适用于图表上的轴标签,例如
折线图
条形图

这是我的密码:

var dataTable = new google.visualization.DataTable();

dataTable.addColumn('datetime', 'Time');
dataTable.addColumn('number', 'Wolves');
dataTable.addRows([
  [new Date(2020, 1, 1, 12), 1],
  [new Date(2020, 1, 1, 13), 3]
]);

// Create DateFormat with a timezone offset of -4
var dateFormat = new google.visualization.DateFormat({formatType: 'long', timeZone: -4});

// Format the first column
dateFormat.format(dataTable, 0);

dataTable.getFormattedValue(0, 0); // "February 1, 2020 at 8:00:00 AM UTC-4"

var table = new google.visualization.Table(document.getElementById('wolf_table'));
table.draw(dataTable);

var lineChart = new google.visualization.LineChart(document.getElementById('wolf_chart'));
lineChart.draw(dataTable);
以下是结果图表:

请注意,表格如何在相关单元格中显示格式正确的时间,而折线图轴如何显示浏览器时间(本例中为GMT)


是否有办法更改折线图轴标签的时区格式?是否有我可能遗漏的内容?

使用
hAxis.ticks
提供轴标签

使用
DateFormat

// Set X-Axis Labels
var xTicks = [];
for (var i = 0; i < dataTable.getNumberOfRows(); i++) {
  xTicks.push({
    v: dataTable.getValue(i, 0),
    f: dateFormat.formatValue(dataTable.getValue(i, 0))
  });      
}

/*** OR ***/      

// custom date, not in dataTable
var customDate = new Date(2016, 9, 4, 22, 7, 7);
xTicks.push({
  v: customDate,  
  f: dateFormat.formatValue(customDate)
});
使用要显示的标签构建一个数组

使用对象表示法为每个标签提供值(
v:
)和格式化值(
f:

// Set X-Axis Labels
var xTicks = [];
for (var i = 0; i < dataTable.getNumberOfRows(); i++) {
  xTicks.push({
    v: dataTable.getValue(i, 0),
    f: dataTable.getFormattedValue(i, 0)
  });
}
请参阅以下工作片段

google.charts.load('current'{
回调:函数(){
var dataTable=new google.visualization.dataTable();
addColumn('datetime','Time');
dataTable.addColumn('number','wolfs');
dataTable.addRows([
[新日期(2020年1月1日12日)1],
[新日期(2020年1月1日13日)3]
]);
//创建时区偏移量为-4的DateFormat
var dateFormat=new google.visualization.dateFormat({formatType:'long',时区:-4});
//格式化第一列
dateFormat.format(数据表,0);
//设置X轴标签
var xTicks=[];
对于(var i=0;i

我和你的处境完全相同。我最终将数据表转换为本地时区中的同一时间。e、 g.我在UTC-4上午8点将2020年2月1日转换为UTC-8上午8点的2020年2月1日,因此图形呈现正确,但保留了原始数据以供我的应用程序中的其他地方使用。有关其他日期格式选项,请参阅。。。