I am having trouble setting the date properly. Basically I have timestamp, open, close, high, low, volume stored line by line in a text file (downloaded using Yahoo API). My program then reads each line and converts it to a QStringList. It then puts each item in the list into the appropriate QVector (dates[], open[], close[], high[], low[], volume[]) converting each item to a double. Here is where the problem is. It appears that the precision is lost during the conversion. The dates always show as periods back in 1970 when the actually timestamp is in fact a date from a few days ago.
#include "dialog.h" #include "ui_dialog.h" #include<QFile> #include<QTextStream> #include<string> #include<iostream> using namespace std; Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); QStringList lines; QString line; QVector<double> dates; QVector<double> high; QVector<double> low; QVector<double> open; QVector<double> close; QVector<double> volume; QFile file ("YHOO.cvs"); if(file.open(QIODevice::ReadOnly)) { QTextStream in(&file); while (!in.atEnd()) { line = in.readLine(); lines = line.split(","); dates.append(lines[0].toDouble()); close.append(lines[1].toDouble()); high.append(lines[2].toDouble()); low.append(lines[3].toDouble()); open.append(lines[4].toDouble()); volume.append(lines[5].toInt()); } file.close(); } else{ QMessageBox::information(0,"info",file.errorString()); } ui->plot->addGraph(); ui->plot->graph(0)->setData(dates, high); ui->plot->xAxis->setTickLabelType(QCPAxis::ltDateTime); ui->plot->xAxis->setDateTimeFormat("MM/dd/yyyy"); QPen pen; pen.setColor(QColor(200,200,200)); ui->plot->graph(0)->setPen(pen); ui->plot->graph(0)->setLineStyle(QCPGraph::lsLine); ui->plot->graph(0)->setBrush(QBrush(QColor(160,50,150))); ui->plot->xAxis->setRange(dates[0], dates[dates.length()-1]); ui->plot->yAxis->setRange(*std::min_element(high.begin(), high.end()),*std::max_element(high.begin(),high.end())); } Dialog::~Dialog() { delete ui; }
YHOO.cvs
20140227,30.1000,30.1600,28.4100,29.7000,2351300
20140228,28.3000,32.0000,27.0000,29.2000,3781000
20140303,28.1900,28.9100,26.8900,27.3000,1664900
20140304,30.0400,30.3800,28.6300,28.8500,2341700
20140305,28.5500,29.5000,28.4900,29.2400,7314100
20140306,27.1700,29.0100,27.1500,28.7600,3007300
20140307,27.2000,28.3200,26.7100,27.8400,2961800
20140310,28.2400,28.5000,27.3500,27.7200,1622100
20140311,27.5300,28.7400,27.1800,28.4400,1745200
20140312,28.5400,28.7400,27.3500,27.4700,2206300