如何根据用户语言环境在Dygraphs图例中格式化日期和时间

3
我有一个显示设备功率输出随时间变化的图表,我想格式化图例以显示时间戳,格式应与当前用户所在地区相同(例如,在美国将显示MM/DD/YY h:m:s am/pm,而在欧盟将显示DD/MM/YYYY HH:MM:SS等)。
目前,它设置为默认值,如下所示: enter image description here 我传递JS Date()对象到x轴,我发现可以修改x轴标签,但我找不到有关更改悬停在图表上方的图例格式的任何信息。

我不了解Dygraphs库。如果您有能力传入一个字符串,您可以使用本地格式化的日期,但不幸的是,“Date.prototype.toLocaleDateString”并非所有浏览器都支持,因此您将不得不使用polyfill。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleFormat#Polyfill - Palpatim
我查看了Date.toLocaleString()并且发现这是我想要使用的东西,特别是因为我已经在Dygraphs中有了Date()对象。问题是告诉Dygraphs使用toLocaleString(),我无法在他们的文档中找到如何做到这一点的任何地方。我发现了这部分,但是没有使用示例,它并不那么有用。 - Sergey Smirnov
1个回答

10

您已经发现了axisLabelFormatter选项,它可以让您控制x轴标签的格式。

如果要控制图例中标签的格式,则需要使用valueFormatter

g = new Dygraph(div, data,
    axes: {
        x: {
            axisLabelFormatter: function (d, gran) {
                return d.toLocaleDateString();
            },
            valueFormatter: function (ms) {
                return new Date(ms).toLocaleDateString();
            }
        }
    }
});

查看这个范例,其中包含完整的工作示例。一个格式化函数接受日期,而另一个接受自纪元以来的毫秒数,这是不是很奇怪?是的。不幸的是,这是我们必须面对的不一致性。


1
正是我所需要的。谢谢! - Sergey Smirnov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接