Я пытаюсь прочитать секунды после 1970 года в QDateTime. Т.е .: startT = 1.390309552938E9
Для этого я использую:
QDateTime time = QDateTime::fromMSecsSinceEpoch(startT*1000); // *1000 because a have seconds while qt expecting milliseconds
Теперь я хочу сравнить это с другим разом, когда я получаю QDateTime :: toString:
QDate startDate = QDate::fromString(datestr, "yyyyMMdd");
QTime time = QTime::fromString(timestr, "hhmmss");
QDateTime datetime = QDateTime(date, time, Qt::UTC);
например, datestr и timestr выглядят так: «20140121» и «130358»
Я хочу сравнить, если time
а также datetime
равны (секундам, за исключением миллисекунд), поэтому я использую что-то вроде этого:
if (time < datetime)
но это не работает ?!
Может ли кто-нибудь помочь мне здесь?
Спасибо!
редактировать:
Я делаю:
QDateTime time = QDateTime::fromMSecsSinceEpoch(startT*1000);
затем я возвращаю эту информацию (время) вместе с:
void Data::setTime(const QDateTime& obTime)
{
time = QDateTime(obTime);
}
где obTime мои времена
позже в коде я возвращаю свое значение:
QDateTime time = newData.getTime();
любой getTime это:
QDateTime MetObs::getTime() const
{
return time;
}
Получение даты и времени совпадает с указанным выше. Нет никаких сложностей с двумя определениями «времени», потому что оно находится на другой позиции Программы
И чем я пытаюсь воспользоваться:
if (time < datetime)
Другая информация:
когда я печатаю значения в виде строк с:
QString timestring = time.toString(Qt::ISODate);
QString datetimestring = datetime.toString(Qt::ISODate);
cout << timestring.toAscii().data() << endl;
cout << datetimestring.toAscii().data() << endl;
это выходит:
2014-01-21T13:03:59
2014-01-21T13:03:58Z
Сравните как это:
time.toTime_t() == datetime.toTime_t()
Метод возвращает секунды с начала эпохи.
Примечание 1: почему вы использовали <
если вы хотите проверить на равенство?
Примечание 2: Вы не должны хранить значения времени в двойном порядке — это может привести к потере точности. uint32_t хорош в течение нескольких секунд, а uint64_t требуется в течение миллисекунд.
Других решений пока нет …