Диаграмма показывает неправильные даты по оси X

Я читаю дату/время и данные из CSV-файла и сохраняю их в линейной диаграмме. Моя строка даты/времени - 1-1-2014 21:55:42 или 18-02-2014 00:00:00, которая на самом деле является первой записью, и у меня есть данные за пару часов.

Сначала я устанавливаю стиль метки оси X диаграммы в правильный формат: "d-M-yyyy HH:mm:ss".

Затем я анализирую свою фактическую строку даты в формате DateTime, используя тот же формат, что и выше: d-M-yyyy HH:mm:ss. И добавьте данные в диаграмму.

введите здесь описание изображения

Я гарантирую, что моя дата верна: введите здесь описание изображения

И мой код:

private void button2_Click_1 (отправитель объекта, EventArgs e) { string line; char[] разделители = { ';', ',', '|' };

        chart1.Series["Series1"].XValueType = ChartValueType.Time;

        chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "d-M-yyyy HH:mm:ss";


        chart1.Series["Series1"].Points.Clear();


        using (System.IO.StreamReader sr = new System.IO.StreamReader(filename))
        {

            while (!sr.EndOfStream)
            {
                line = sr.ReadLine();
                DateTime newDateTime = new DateTime();

                string[] part = line.Split(delimiters);

                Console.WriteLine(part[0]);

                newDateTime = DateTime.ParseExact(
                    part[0],
                    "d-M-yyyy HH:mm:ss", 
                    CultureInfo.InvariantCulture
                    );

                chart1.Series["Series1"].Points.AddXY(newDateTime, part[5]);

            }

        }
        chart1.Refresh();
    }

person Madmenyo    schedule 25.02.2014    source источник
comment
Что такое newdatetime в вашем коде? Это правильная дата? Может быть, запишите это в файл или что-то в этом роде.   -  person Henno    schedule 25.02.2014


Ответы (1)


Проблема: вы установили пользовательский формат для X-Axis как d-M-yyyy HH:mm:ss, но вы просто предоставляете datetime без форматирования.

Замените это:

chart1.Series["Series1"].Points.AddXY(newDateTime, part[5]);

С этим:

chart1.Series["Series1"].Points.AddXY(
    newDateTime.ToString("d-M-yyyy HH:mm:ss"), part[5]);
person Sudhakar Tillapudi    schedule 25.02.2014
comment
Потрясающе спасибо. Можете ли вы уточнить, почему я должен форматировать его снова? Я уже отформатировал переменную labelStyle и newDateTime. Как я показал, он имеет точно такой же формат, как я дал его перед добавлением в свою серию. - person Madmenyo; 26.02.2014