13 #include "eckit/exception/Exceptions.h"
24 const char*
Day =
"day";
29 const char*
Utc =
"isUTC";
37 yearKey_(conf.getString(ConfKeys::
Year)),
38 monthKey_(conf.getString(ConfKeys::
Month)),
39 dayKey_(conf.getString(ConfKeys::
Day)),
40 hourKey_(conf.getString(ConfKeys::
Hour)),
41 minuteKey_(conf.getString(ConfKeys::
Minute)),
57 std::cout <<
"WARNING: usage of " \
59 <<
" in datetime is depricated!" \
69 auto datetimes = std::vector<std::string>();
71 datetimes.reserve(map.at(
yearKey_).size());
72 for (
unsigned int idx = 0; idx < map.at(
yearKey_).size(); idx++)
75 std::ostringstream datetimeStr;
76 datetimeStr << std::setfill(
'0')
77 << std::setw(4) << map.at(
yearKey_)(idx) <<
"-" \
78 << std::setw(2) << map.at(
monthKey_)(idx) <<
"-" \
79 << std::setw(2) << map.at(
dayKey_)(idx) <<
"T" \
81 << std::setw(2) << map.at(
minuteKey_)(idx) <<
":";
85 datetimeStr << std::setw(2) << map.at(
secondKey_)(idx);
89 datetimeStr << std::setw(2) << 0;
94 datetimes.push_back(datetimeStr.str());
97 return std::make_shared<StrVecDataObject>(datetimes);
102 std::vector<std::string> requiredKeys = {
yearKey_,
113 std::stringstream errStr;
114 errStr <<
"Mnemonic ";
116 bool isKeyMissing =
false;
117 for (
auto key : requiredKeys)
119 if (map.find(
key) == map.end())
127 errStr <<
" could not be found during export of datetime object.";
131 throw eckit::BadParameter(errStr.str());
const std::string monthKey_
Mnemonic for month.
int hoursFromUtc_
Hours to offset from UTC (optional)
DatetimeVariable(const eckit::Configuration &conf)
const std::string hourKey_
Mnemonic for hour.
std::string secondKey_
Mnemonic for second (optional)
const std::string yearKey_
Mnemonic for year.
std::shared_ptr< DataObject > exportData(const BufrDataMap &map) final
Get the configured mnemonics and turn them into datetime strings.
const std::string dayKey_
Mnemonic for day.
void checkKeys(const BufrDataMap &map)
makes sure the bufr data map has all the required keys.
const std::string minuteKey_
Mnemonic for minute.
IngesterArrayMap BufrDataMap
const char * HoursFromUtc