diff --git a/ApplicationCode/Application/Tools/RiaDateTimeTools.cpp b/ApplicationCode/Application/Tools/RiaDateTimeTools.cpp index ee9f08bf0d..f9f653a580 100644 --- a/ApplicationCode/Application/Tools/RiaDateTimeTools.cpp +++ b/ApplicationCode/Application/Tools/RiaDateTimeTools.cpp @@ -29,11 +29,11 @@ quint64 RiaDateTimeTools::secondsFromUnit(const std::string& unit) { QString str = QString::fromStdString(unit).trimmed().toUpper(); - if (str == "DAYS") + if (str == "DAYS" || str == "DAY") { return RiaDateTimeTools::secondsInDay(); } - else if (str == "YEARS") + else if (str == "YEARS" || str == "YEAR") { return RiaDateTimeTools::secondsInYear(); } diff --git a/ApplicationCode/FileInterface/RifColumnBasedUserData.cpp b/ApplicationCode/FileInterface/RifColumnBasedUserData.cpp index c093def06c..897ae50233 100644 --- a/ApplicationCode/FileInterface/RifColumnBasedUserData.cpp +++ b/ApplicationCode/FileInterface/RifColumnBasedUserData.cpp @@ -87,15 +87,34 @@ bool RifColumnBasedUserData::parse(const QString& data) else { const ColumnInfo& ci = m_parser->tables()[tableIndex][timeColumnIndex]; + QDateTime startDate; + QString startDateString = QString::fromStdString(ci.startDate); + if (!startDateString.isEmpty()) + { + QString dateFormatString = "ddMMyyyy"; + + startDate = QDateTime::fromString(startDateString, dateFormatString); + } m_timeSteps.resize(m_timeSteps.size() + 1); quint64 scaleFactor = RiaDateTimeTools::secondsFromUnit(ci.unitName); std::vector& timeSteps = m_timeSteps.back(); + + if (startDate.isValid()) { - for (auto v : ci.values) + for (const auto& timeStepValue : ci.values) { - timeSteps.push_back(v * scaleFactor); + QDateTime dateTime = startDate.addSecs(scaleFactor * timeStepValue); + + timeSteps.push_back(dateTime.toTime_t()); + } + } + else + { + for (const auto& timeStepValue : ci.values) + { + timeSteps.push_back(scaleFactor * timeStepValue); } } diff --git a/ApplicationCode/FileInterface/RifKeywordVectorUserData.cpp b/ApplicationCode/FileInterface/RifKeywordVectorUserData.cpp index 0e861f1adf..d986542ad8 100644 --- a/ApplicationCode/FileInterface/RifKeywordVectorUserData.cpp +++ b/ApplicationCode/FileInterface/RifKeywordVectorUserData.cpp @@ -93,13 +93,41 @@ bool RifKeywordVectorUserData::parse(const QString& data) if (isTimeHeader(keyValuePairs)) { - QString unitText = valueForKey(keyValuePairs, "UNITS"); - quint64 scaleFactor = RiaDateTimeTools::secondsFromUnit(unitText.toStdString()); - std::vector ts; - for (const auto& year : m_parser->keywordBasedVectors()[i].values) + { - ts.push_back(scaleFactor * year); + QDateTime startDate; + QString startDateString = valueForKey(keyValuePairs, "STARTDATE"); + if (!startDateString.isEmpty()) + { + QString dateFormatString = valueForKey(keyValuePairs, "DATEFORMAT"); + if (dateFormatString.isEmpty()) + { + dateFormatString = "DD MM YYYY"; + } + + startDate = QDateTime::fromString(startDateString, dateFormatString); + } + + QString unitText = valueForKey(keyValuePairs, "UNITS"); + quint64 scaleFactor = RiaDateTimeTools::secondsFromUnit(unitText.toStdString()); + + if (startDate.isValid()) + { + for (const auto& timeStepValue : m_parser->keywordBasedVectors()[i].values) + { + QDateTime dateTime = startDate.addSecs(scaleFactor * timeStepValue); + + ts.push_back(dateTime.toTime_t()); + } + } + else + { + for (const auto& timeStepValue : m_parser->keywordBasedVectors()[i].values) + { + ts.push_back(scaleFactor * timeStepValue); + } + } } m_timeSteps.push_back(ts);