int month = Convert::ToLong(timespec.SubStr(5, 2));
int day = Convert::ToLong(timespec.SubStr(8, 2));
+ if (month < 1 || month > 12)
+ BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid month in time specification: " + timespec));
+ if (day < 1 || day > 31)
+ BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid day in time specification: " + timespec));
+
if (begin) {
begin->tm_year = year - 1900;
- begin->tm_mon = month;
- begin->tm_mday = day + 1;
+ begin->tm_mon = month - 1;
+ begin->tm_mday = day;
begin->tm_hour = 0;
begin->tm_min = 0;
begin->tm_sec = 0;
if (end) {
end->tm_year = year - 1900;
- end->tm_mon = month;
- end->tm_mday = day + 1;
+ end->tm_mon = month - 1;
+ end->tm_mday = day;
end->tm_hour = 24;
end->tm_min = 0;
end->tm_sec = 0;