【问题标题】:[Highcharts][jQuery] How to get DateTime from XML to jQuery[Highcharts][jQuery] 如何从 XML 获取 DateTime 到 jQuery
【发布时间】:2014-07-30 13:53:14
【问题描述】:

我需要在 Highchart 图表上绘制一些日期时间间隔。我有一个结构如下的 XML 文件:

<chart>
    <categories>
        <item>Status</item>
    </categories>
    <series>
        <name>Breakdown</name>
        <data>
      <axis>0</axis>
            <low>2013,07,03, 0, 0, 0</low>
      <high>2013, 07, 03, 4, 0, 0</high>
        </data>
    </series>
    <series>
        <name>Production</name>
        <data>
      <axis>0</axis>
            <low>2013, 07, 03, 10, 0, 0</low>
      <high>2013, 07, 03, 12, 0, 0</high>
        </data>
    </series>
    <series>
        <name>TrialRun</name>
        <data>
      <axis>0</axis>
            <low>2013, 07, 03, 14, 0, 0</low>
      <high>2013, 07, 03, 15, 0, 0</high>
        </data>
    </series>
    <series>
        <name>ChangeOver</name>
        <data>
      <axis>0</axis>
            <low>2013, 07, 03, 4, 0, 0</low>
      <high>2013, 07, 03, 10, 0, 0</high>
        </data>
    </series>
</chart>

如何从代码中提取日期并将其解析为 UTC 格式的 jQuery

我已经尝试使用下面的代码,但它没有在我的图表上绘制任何值(日期):

// Load the data from the XML file 
    $.get('data.xml', function (xml) {
        // Split the lines
        var $xml = $(xml);

        // push series
        $xml.find('series').each(function (i, series) {

            var seriesOptions = {
                name: $(series).find('name').text(),
                data: []
            };

            // push data points
            $(series).find('data').each(function (i, value) {
                var seriesData = {
                    x: parseInt($(value).find('axis').text()),
                    low: Date.UTC(parseInt($(value).find('low').text())),
                    high: Date.UTC(parseInt($(value).find('high').text()))
                };
                seriesOptions.data.push(seriesData);
            });

            // add it to the options
            options.series.push(seriesOptions);
        });

备注:

  • 如果有比 UTC 更好的格式来解析 XML 日期请指定
  • 如果有更好的格式在 XML 中存储日期时间,请指定
  • 如果有更简单的 JSON 替代方法,请编写等效代码

(我是 jQuery 和 XML 文件的初学者,根本没有使用过 JSON)

【问题讨论】:

  • 好吧,您的解析器和解决方案看起来不错,但也许更好的是更新您的后端以返回以毫秒为单位的时间,而不是格式 yyyy,mm,dd,hh,mm,ss。
  • 嗯,我找到了解决方案,它实际上是在 XML 中,在解析中有点。

标签: jquery arrays xml list highcharts


【解决方案1】:

问题在于 XML 日期格式,它应该像 yyyy-mm-dd hh:mm:ss ,而不是像我放的那样用逗号分隔,这也应该在代码中解析:

var seriesData = {
                    x: 0,
                    low: Date.parse($(value).find('low').text()+" UTC"),
                    high: Date.parse($(value).find('high').text()+" UTC")
                 };

【讨论】:

  • 使用逗号,您需要拆分字符串并推送到 Date.UTC。而且 Date.parse() 中不需要“UTC”;
  • @SebastianBochan 如果我不输入“UTC”,它会占用我的日期并显示 -4 小时。
猜你喜欢
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
相关资源
最近更新 更多