mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-19 04:00:45 +00:00
Update all calls to fromMSecsSinceEpoch to specify UTC
QT 5 changed the behavior of QDateTime::fromMSecsSinceEpoch to return the result in local time zone, whereas in QT 4, it returned UTC. On systems that do not support time zones, the QT 5 version still returns UTC. But for all other systems, the api change causes confusion in the SH UI because some date and time values are displayed in UTC instead of the local time zone. This manifests itself when the user is in USA which has a negative UTC offset. When selecting a date range to display in the overview screen, the displayed dates appear to be one day behind the selected date range. For consistently, SH should always use UTC internally and only convert to the local time zone when displaying data to the user. This will ensure that the time zone information is preserved correctly when the UTC offset of the user's machine changes due to DST changes or traveling. There are a few calls to fromMSecsSinceEpoch which should be using local time, and those will be updated in future commits.
This commit is contained in:
parent
b0bc8af718
commit
59a0823d20
@ -470,7 +470,7 @@ void gGraphView::dumpInfo()
|
|||||||
|
|
||||||
Day * day = p_profile->GetGoodDay(date, MT_CPAP);
|
Day * day = p_profile->GetGoodDay(date, MT_CPAP);
|
||||||
if (day) {
|
if (day) {
|
||||||
QDateTime dt=QDateTime::fromMSecsSinceEpoch(day->first());
|
QDateTime dt=QDateTime::fromMSecsSinceEpoch(day->first(), Qt::UTC);
|
||||||
|
|
||||||
mainwin->log(QString("Available Channels for %1").arg(dt.toString("MMM dd yyyy")));
|
mainwin->log(QString("Available Channels for %1").arg(dt.toString("MMM dd yyyy")));
|
||||||
QHash<schema::ChanType, QList<schema::Channel *> > list;
|
QHash<schema::ChanType, QList<schema::Channel *> > list;
|
||||||
@ -1397,8 +1397,8 @@ QString gGraphView::getRangeString()
|
|||||||
|
|
||||||
qint64 maxx = minx + 86400000L * qint64(days)-1;
|
qint64 maxx = minx + 86400000L * qint64(days)-1;
|
||||||
|
|
||||||
QDateTime st = QDateTime::fromMSecsSinceEpoch(minx);
|
QDateTime st = QDateTime::fromMSecsSinceEpoch(minx, Qt::UTC);
|
||||||
QDateTime et = QDateTime::fromMSecsSinceEpoch(maxx);
|
QDateTime et = QDateTime::fromMSecsSinceEpoch(maxx, Qt::UTC);
|
||||||
|
|
||||||
QString txt = st.toString("d MMM") + " - " + et.addDays(-1).toString("d MMM yyyy");
|
QString txt = st.toString("d MMM") + " - " + et.addDays(-1).toString("d MMM yyyy");
|
||||||
return txt;
|
return txt;
|
||||||
@ -1407,8 +1407,8 @@ QString gGraphView::getRangeString()
|
|||||||
} else {
|
} else {
|
||||||
fmt = "HH:mm:ss:zzz";
|
fmt = "HH:mm:ss:zzz";
|
||||||
}
|
}
|
||||||
QDateTime st = QDateTime::fromMSecsSinceEpoch(m_minx);
|
QDateTime st = QDateTime::fromMSecsSinceEpoch(m_minx, Qt::UTC);
|
||||||
QDateTime et = QDateTime::fromMSecsSinceEpoch(m_maxx);
|
QDateTime et = QDateTime::fromMSecsSinceEpoch(m_maxx, Qt::UTC);
|
||||||
|
|
||||||
QString txt = st.toString(QObject::tr("d MMM [ %1 - %2 ]").arg(fmt).arg(et.toString(fmt))) ;
|
QString txt = st.toString(QObject::tr("d MMM [ %1 - %2 ]").arg(fmt).arg(et.toString(fmt))) ;
|
||||||
|
|
||||||
@ -2125,7 +2125,7 @@ void gGraphView::onSnapshotGraphToggle()
|
|||||||
|
|
||||||
QString basename = name+";";
|
QString basename = name+";";
|
||||||
if (graph->m_day) {
|
if (graph->m_day) {
|
||||||
QDateTime date = QDateTime::fromMSecsSinceEpoch(graph->min_x);
|
QDateTime date = QDateTime::fromMSecsSinceEpoch(graph->min_x, Qt::UTC);
|
||||||
basename += date.date().toString(Qt::SystemLocaleLongDate);
|
basename += date.date().toString(Qt::SystemLocaleLongDate);
|
||||||
}
|
}
|
||||||
QString newname;
|
QString newname;
|
||||||
@ -2968,8 +2968,7 @@ void gGraphView::keyPressEvent(QKeyEvent *event)
|
|||||||
m_metaselect=false;
|
m_metaselect=false;
|
||||||
qint64 start,end;
|
qint64 start,end;
|
||||||
getSelectionTimes(start,end);
|
getSelectionTimes(start,end);
|
||||||
QDateTime d1 = QDateTime::fromMSecsSinceEpoch(start);
|
QDateTime d1 = QDateTime::fromMSecsSinceEpoch(start, Qt::UTC);
|
||||||
// QDateTime d2 = QDateTime::fromMSecsSinceEpoch(end);
|
|
||||||
|
|
||||||
mainwin->getDaily()->addBookmark(start, end, QString("Bookmark at %1").arg(d1.time().toString("HH:mm:ss")));
|
mainwin->getDaily()->addBookmark(start, end, QString("Bookmark at %1").arg(d1.time().toString("HH:mm:ss")));
|
||||||
m_graphs[m_graph_index]->cancelSelection();
|
m_graphs[m_graph_index]->cancelSelection();
|
||||||
|
@ -136,7 +136,7 @@ bool gSummaryChart::mouseReleaseEvent(QMouseEvent *event, gGraph *graph)
|
|||||||
|
|
||||||
graph->roundY(miny, maxy);
|
graph->roundY(miny, maxy);
|
||||||
|
|
||||||
QDate date = QDateTime::fromMSecsSinceEpoch(m_minx).date();
|
QDate date = QDateTime::fromMSecsSinceEpoch(m_minx, Qt::UTC).date();
|
||||||
|
|
||||||
int days = ceil(double(m_maxx - m_minx) / 86400000.0);
|
int days = ceil(double(m_maxx - m_minx) / 86400000.0);
|
||||||
|
|
||||||
@ -404,8 +404,8 @@ void gSummaryChart::paint(QPainter &painter, gGraph &graph, const QRegion ®io
|
|||||||
m_maxx = graph.max_x;
|
m_maxx = graph.max_x;
|
||||||
|
|
||||||
|
|
||||||
QDateTime date2 = QDateTime::fromMSecsSinceEpoch(m_minx);
|
QDateTime date2 = QDateTime::fromMSecsSinceEpoch(m_minx, Qt::UTC);
|
||||||
QDateTime enddate2 = QDateTime::fromMSecsSinceEpoch(m_maxx);
|
QDateTime enddate2 = QDateTime::fromMSecsSinceEpoch(m_maxx, Qt::UTC);
|
||||||
|
|
||||||
QDate date = date2.date();
|
QDate date = date2.date();
|
||||||
QDate enddate = enddate2.date();
|
QDate enddate = enddate2.date();
|
||||||
@ -819,8 +819,8 @@ void gSessionTimesChart::paint(QPainter &painter, gGraph &graph, const QRegion &
|
|||||||
m_minx = graph.min_x;
|
m_minx = graph.min_x;
|
||||||
m_maxx = graph.max_x;
|
m_maxx = graph.max_x;
|
||||||
|
|
||||||
QDateTime date2 = QDateTime::fromMSecsSinceEpoch(m_minx);
|
QDateTime date2 = QDateTime::fromMSecsSinceEpoch(m_minx, Qt::UTC);
|
||||||
QDateTime enddate2 = QDateTime::fromMSecsSinceEpoch(m_maxx);
|
QDateTime enddate2 = QDateTime::fromMSecsSinceEpoch(m_maxx, Qt::UTC);
|
||||||
|
|
||||||
QDate date = date2.date();
|
QDate date = date2.date();
|
||||||
QDate enddate = enddate2.date();
|
QDate enddate = enddate2.date();
|
||||||
@ -900,7 +900,7 @@ void gSessionTimesChart::paint(QPainter &painter, gGraph &graph, const QRegion &
|
|||||||
// segments
|
// segments
|
||||||
for (int j=0; j<slize; ++j) {
|
for (int j=0; j<slize; ++j) {
|
||||||
const SessionSlice & slice = sess->m_slices.at(j);
|
const SessionSlice & slice = sess->m_slices.at(j);
|
||||||
QDateTime st = QDateTime::fromMSecsSinceEpoch(slice.start);
|
QDateTime st = QDateTime::fromMSecsSinceEpoch(slice.start, Qt::UTC);
|
||||||
|
|
||||||
float s1 = float(splittime.secsTo(st)) / 3600.0;
|
float s1 = float(splittime.secsTo(st)) / 3600.0;
|
||||||
|
|
||||||
@ -915,7 +915,7 @@ void gSessionTimesChart::paint(QPainter &painter, gGraph &graph, const QRegion &
|
|||||||
} else {
|
} else {
|
||||||
// otherwise just show session duration
|
// otherwise just show session duration
|
||||||
qint64 sf = sess->first();
|
qint64 sf = sess->first();
|
||||||
QDateTime st = QDateTime::fromMSecsSinceEpoch(sf);
|
QDateTime st = QDateTime::fromMSecsSinceEpoch(sf, Qt::UTC);
|
||||||
float s1 = float(splittime.secsTo(st)) / 3600.0;
|
float s1 = float(splittime.secsTo(st)) / 3600.0;
|
||||||
|
|
||||||
float s2 = sess->hours();
|
float s2 = sess->hours();
|
||||||
|
@ -144,7 +144,7 @@ void ResmedLoader::ParseSTR(Machine *mach, QStringList strfiles)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDateTime start = QDateTime::fromMSecsSinceEpoch(str.startdate);
|
QDateTime start = QDateTime::fromMSecsSinceEpoch(str.startdate, Qt::UTC);
|
||||||
QDate date = start.date();
|
QDate date = start.date();
|
||||||
|
|
||||||
qDebug() << "Parsing" << *it << date << str.GetNumDataRecords() << str.GetNumSignals();
|
qDebug() << "Parsing" << *it << date << str.GetNumDataRecords() << str.GetNumSignals();
|
||||||
@ -444,6 +444,7 @@ void ResmedLoader::ParseSTR(Machine *mach, QStringList strfiles)
|
|||||||
|
|
||||||
laston = ontime;
|
laston = ontime;
|
||||||
|
|
||||||
|
// TODO UTC
|
||||||
QDateTime dontime = QDateTime::fromTime_t(ontime);
|
QDateTime dontime = QDateTime::fromTime_t(ontime);
|
||||||
date = dontime.date();
|
date = dontime.date();
|
||||||
R.date = date;
|
R.date = date;
|
||||||
@ -2017,7 +2018,7 @@ int ResmedLoader::Open(QString path)
|
|||||||
QFile::copy(path + RMS9_STR_idfile + STR_ext_TGT, backup_path + RMS9_STR_idfile + STR_ext_TGT);
|
QFile::copy(path + RMS9_STR_idfile + STR_ext_TGT, backup_path + RMS9_STR_idfile + STR_ext_TGT);
|
||||||
QFile::copy(path + RMS9_STR_idfile + STR_ext_CRC, backup_path + RMS9_STR_idfile + STR_ext_CRC);
|
QFile::copy(path + RMS9_STR_idfile + STR_ext_CRC, backup_path + RMS9_STR_idfile + STR_ext_CRC);
|
||||||
|
|
||||||
QDateTime dts = QDateTime::fromMSecsSinceEpoch(stredf.startdate);
|
QDateTime dts = QDateTime::fromMSecsSinceEpoch(stredf.startdate, Qt::UTC);
|
||||||
dir.mkpath(backup_path + "STR_Backup");
|
dir.mkpath(backup_path + "STR_Backup");
|
||||||
QString strmonthly = backup_path + "STR_Backup/STR-" + dts.toString("yyyyMM") + "." + STR_ext_EDF;
|
QString strmonthly = backup_path + "STR_Backup/STR-" + dts.toString("yyyyMM") + "." + STR_ext_EDF;
|
||||||
|
|
||||||
|
@ -150,9 +150,6 @@ int SomnoposeLoader::OpenFile(QString filename)
|
|||||||
sess->set_last(time);
|
sess->set_last(time);
|
||||||
ev_orientation->AddEvent(time, orientation);
|
ev_orientation->AddEvent(time, orientation);
|
||||||
ev_inclination->AddEvent(time, inclination);
|
ev_inclination->AddEvent(time, inclination);
|
||||||
|
|
||||||
// QDateTime dt=QDateTime::fromMSecsSinceEpoch(time);
|
|
||||||
// qDebug() << dt << orientation << inclination;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sess->setMin(POS_Orientation, ev_orientation->Min());
|
sess->setMin(POS_Orientation, ev_orientation->Min());
|
||||||
|
@ -668,7 +668,7 @@ void Daily::UpdateEventsTree(QTreeWidget *tree,Day *day)
|
|||||||
t-=float(ev.raw(o)/2.0)*1000.0;
|
t-=float(ev.raw(o)/2.0)*1000.0;
|
||||||
}
|
}
|
||||||
QStringList a;
|
QStringList a;
|
||||||
QDateTime d=QDateTime::fromMSecsSinceEpoch(t);
|
QDateTime d=QDateTime::fromMSecsSinceEpoch(t, Qt::UTC);
|
||||||
QString s=QString("#%1: %2 (%3)").arg((int)(++mccnt[code]),(int)3,(int)10,QChar('0')).arg(d.toString("HH:mm:ss")).arg(m.value()[z]->raw(o));
|
QString s=QString("#%1: %2 (%3)").arg((int)(++mccnt[code]),(int)3,(int)10,QChar('0')).arg(d.toString("HH:mm:ss")).arg(m.value()[z]->raw(o));
|
||||||
a.append(s);
|
a.append(s);
|
||||||
QTreeWidgetItem *item=new QTreeWidgetItem(a);
|
QTreeWidgetItem *item=new QTreeWidgetItem(a);
|
||||||
@ -690,8 +690,8 @@ void Daily::UpdateEventsTree(QTreeWidget *tree,Day *day)
|
|||||||
tree->insertTopLevelItem(cnt++ , start);
|
tree->insertTopLevelItem(cnt++ , start);
|
||||||
tree->insertTopLevelItem(cnt++ , end);
|
tree->insertTopLevelItem(cnt++ , end);
|
||||||
for (QList<Session *>::iterator s=day->begin(); s!=day->end(); ++s) {
|
for (QList<Session *>::iterator s=day->begin(); s!=day->end(); ++s) {
|
||||||
QDateTime st = QDateTime::fromMSecsSinceEpoch((*s)->first());
|
QDateTime st = QDateTime::fromMSecsSinceEpoch((*s)->first(), Qt::UTC);
|
||||||
QDateTime et = QDateTime::fromMSecsSinceEpoch((*s)->last());
|
QDateTime et = QDateTime::fromMSecsSinceEpoch((*s)->last(), Qt::UTC);
|
||||||
|
|
||||||
QTreeWidgetItem * item = new QTreeWidgetItem(QStringList(st.toString("HH:mm:ss")));
|
QTreeWidgetItem * item = new QTreeWidgetItem(QStringList(st.toString("HH:mm:ss")));
|
||||||
item->setData(0,Qt::UserRole, (*s)->first());
|
item->setData(0,Qt::UserRole, (*s)->first());
|
||||||
@ -1998,7 +1998,7 @@ void Daily::RedrawGraphs()
|
|||||||
void Daily::on_LineCursorUpdate(double time)
|
void Daily::on_LineCursorUpdate(double time)
|
||||||
{
|
{
|
||||||
if (time > 1) {
|
if (time > 1) {
|
||||||
QDateTime dt = QDateTime::fromMSecsSinceEpoch(time);
|
QDateTime dt = QDateTime::fromMSecsSinceEpoch(time, Qt::UTC);
|
||||||
QString txt = dt.toString("MMM dd HH:mm:ss.zzz");
|
QString txt = dt.toString("MMM dd HH:mm:ss.zzz");
|
||||||
dateDisplay->setText(txt);
|
dateDisplay->setText(txt);
|
||||||
} else dateDisplay->setText(QString(GraphView->emptyText()));
|
} else dateDisplay->setText(QString(GraphView->emptyText()));
|
||||||
@ -2215,7 +2215,7 @@ void Daily::on_bookmarkTable_itemClicked(QTableWidgetItem *item)
|
|||||||
void Daily::addBookmark(qint64 st, qint64 et, QString text)
|
void Daily::addBookmark(qint64 st, qint64 et, QString text)
|
||||||
{
|
{
|
||||||
ui->bookmarkTable->blockSignals(true);
|
ui->bookmarkTable->blockSignals(true);
|
||||||
QDateTime d=QDateTime::fromTime_t(st/1000L);
|
QDateTime d=QDateTime::fromTime_t(st/1000L, Qt::UTC);
|
||||||
int row=ui->bookmarkTable->rowCount();
|
int row=ui->bookmarkTable->rowCount();
|
||||||
ui->bookmarkTable->insertRow(row);
|
ui->bookmarkTable->insertRow(row);
|
||||||
QTableWidgetItem *tw=new QTableWidgetItem(text);
|
QTableWidgetItem *tw=new QTableWidgetItem(text);
|
||||||
|
@ -549,7 +549,7 @@ void OximeterImport::on_calendarWidget_clicked(const QDate &date)
|
|||||||
|
|
||||||
sessbar->clear();
|
sessbar->clear();
|
||||||
if (day) {
|
if (day) {
|
||||||
QDateTime time=QDateTime::fromMSecsSinceEpoch(day->first());
|
QDateTime time=QDateTime::fromMSecsSinceEpoch(day->first(), Qt::UTC);
|
||||||
sessbar->clear();
|
sessbar->clear();
|
||||||
QList<QColor> colors;
|
QList<QColor> colors;
|
||||||
colors.push_back("#ffffe0");
|
colors.push_back("#ffffe0");
|
||||||
@ -582,7 +582,7 @@ void OximeterImport::on_calendarWidget_selectionChanged()
|
|||||||
}
|
}
|
||||||
void OximeterImport::onSessionSelected(Session * session)
|
void OximeterImport::onSessionSelected(Session * session)
|
||||||
{
|
{
|
||||||
QDateTime time=QDateTime::fromMSecsSinceEpoch(session->first());
|
QDateTime time=QDateTime::fromMSecsSinceEpoch(session->first(), Qt::UTC);
|
||||||
ui->dateTimeEdit->setDateTime(time);
|
ui->dateTimeEdit->setDateTime(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -591,7 +591,7 @@ void OximeterImport::on_sessionBackButton_clicked()
|
|||||||
int idx = (sessbar->selected()-1);
|
int idx = (sessbar->selected()-1);
|
||||||
if (idx >= 0) {
|
if (idx >= 0) {
|
||||||
sessbar->setSelected(idx);
|
sessbar->setSelected(idx);
|
||||||
QDateTime datetime = QDateTime::fromMSecsSinceEpoch(sessbar->session(idx)->first());
|
QDateTime datetime = QDateTime::fromMSecsSinceEpoch(sessbar->session(idx)->first(), Qt::UTC);
|
||||||
ui->dateTimeEdit->setDateTime(datetime);
|
ui->dateTimeEdit->setDateTime(datetime);
|
||||||
sessbar->update();
|
sessbar->update();
|
||||||
}
|
}
|
||||||
@ -602,7 +602,7 @@ void OximeterImport::on_sessionForwardButton_clicked()
|
|||||||
int idx = (sessbar->selected()+1);
|
int idx = (sessbar->selected()+1);
|
||||||
if (idx < sessbar->count()) {
|
if (idx < sessbar->count()) {
|
||||||
sessbar->setSelected(idx);
|
sessbar->setSelected(idx);
|
||||||
QDateTime datetime = QDateTime::fromMSecsSinceEpoch(sessbar->session(idx)->first());
|
QDateTime datetime = QDateTime::fromMSecsSinceEpoch(sessbar->session(idx)->first(), Qt::UTC);
|
||||||
ui->dateTimeEdit->setDateTime(datetime);
|
ui->dateTimeEdit->setDateTime(datetime);
|
||||||
sessbar->update();
|
sessbar->update();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user