Standard str2date function tries to fix a wrong date. For example, if we got as a parameter fantastic June 31th, it returns us June 30, which can be a bad result for your business case.
There are at least two possible solutions for that.
First, by converting the result back to a string and comparing it with the initial string.
Second, by using .Net function tryParse.
Happy date converting!
There are at least two possible solutions for that.
First, by converting the result back to a string and comparing it with the initial string.
private container cgiValidateDate(str _dateStr) { date retDate = str2Date(_dateStr, #cgiDateFormat); boolean isOK = true; str madeDateStr = date2StrUsr(retDate, DateFlags::FormatAll); if(retDate == dateNull() || _dateStr != madeDateStr) { error(strFmt("Date %1 is incorrect", _dateStr)); isOK = false; } return [isOK, retDate]; }
Second, by using .Net function tryParse.
private container cgiValidateDate(str _dateStr) { date retDate; utcDateTime retDateTime; boolean isOK = true; if(!System.DateTime::TryParse(_dateStr, byref retDateTime)) { error(strFmt("Date %1 is incorrect", _dateStr)); isOK = false; } else { retDate = DateTimeUtil::date(retDateTime); } return [isOK, retDate]; }
No comments:
Post a Comment