diff --git a/src/bufr/BufrParser/Exports/Variables/DatetimeVariable.cpp b/src/bufr/BufrParser/Exports/Variables/DatetimeVariable.cpp index a8e333d40..525e66301 100644 --- a/src/bufr/BufrParser/Exports/Variables/DatetimeVariable.cpp +++ b/src/bufr/BufrParser/Exports/Variables/DatetimeVariable.cpp @@ -94,24 +94,34 @@ namespace Ingester int month = static_cast(map.at(getExportKey(ConfKeys::Month))->getAsFloat(idx)); int day = static_cast(map.at(getExportKey(ConfKeys::Day))->getAsFloat(idx)); int hour = static_cast(map.at(getExportKey(ConfKeys::Hour))->getAsFloat(idx)); - int minute = static_cast(map.at(getExportKey(ConfKeys::Minute))->getAsFloat(idx)); + int minutes = 0; int seconds = 0; diff_time = missing_int; if (year != missing && month != missing && day != missing && - hour != missing && - minute != missing) + hour != missing) { tm.tm_year = year - 1900; tm.tm_mon = month - 1; tm.tm_mday = day; tm.tm_hour = hour; - tm.tm_min = minute; + tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = 0; + if (!minuteQuery_.empty()) + { + minutes = + static_cast(map.at(getExportKey(ConfKeys::Minute))->getAsFloat(idx)); + + if (minutes >= 0 && minutes < 60) + { + tm.tm_min = minutes; + } + } + if (!secondQuery_.empty()) { seconds = diff --git a/test/testinput/bufr_ncep_adpupa_minu.yaml b/test/testinput/bufr_ncep_adpupa_minu.yaml new file mode 100644 index 000000000..802627d28 --- /dev/null +++ b/test/testinput/bufr_ncep_adpupa_minu.yaml @@ -0,0 +1,55 @@ +# (C) Copyright 2020 NOAA/NWS/NCEP/EMC +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + +observations: + - obs space: + name: bufr + + obsdatain: "./testinput/New/gdas.t12z.adpupa.tm00.bufr_d" + + exports: + variables: + timestamp: + datetime: + year: "[*/YEAR, */RCPTIM/RCYR[1], */RCYR[1]]" + month: "[*/MNTH, */RCPTIM/RCMO[1], */RCMO[1]]" + day: "[*/DAYS, */RCPTIM/RCDY[1], */RCDY[1]]" + hour: "[*/HOUR, */RCPTIM/RCHR[1], */RCHR[1]]" + minute: "[*/MINU, */RCPTIM/RCMI[1], */RCMI[1]]" + + latitude: + query: "*/CLAT" + longitude: + query: "*/CLON" + + + ioda: + backend: netcdf + obsdataout: "./testrun/bufr_ncep_adpupa_minu.nc" + + + variables: + + - name: "MetaData/dateTime" + coordinates: "longitude latitude" + source: variables/timestamp + dimensions: ["Location"] + longName: "Datetime" + units: "seconds since 1970-01-01T00:00:00Z" + + - name: "MetaData/latitude" + coordinates: "longitude latitude" + source: variables/latitude + longName: "Latitude" + units: "degrees_north" + range: [-90, 90] + + - name: "MetaData/longitude" + coordinates: "longitude latitude" + source: variables/longitude + longName: "Longitude" + units: "degrees_east" + range: [-180, 180] + diff --git a/test/testinput/gdas.t12z.adpupa.tm00.bufr_d b/test/testinput/gdas.t12z.adpupa.tm00.bufr_d new file mode 100644 index 000000000..f1a001963 --- /dev/null +++ b/test/testinput/gdas.t12z.adpupa.tm00.bufr_d @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b520bf510c44a218816ffd89313b31ba09bd7b66db1364444634e3841897409d +size 1616312 diff --git a/test/testoutput/bufr_ncep_adpupa_minu.nc b/test/testoutput/bufr_ncep_adpupa_minu.nc new file mode 100644 index 000000000..fe7319e10 --- /dev/null +++ b/test/testoutput/bufr_ncep_adpupa_minu.nc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b40fbfb1a02c4bbf9ae29058a52960769380c36bbae920536a921f0eaa8f2dfc +size 25718