So I am using a scripting language with c++-like syntax, and I am trying to think of the best way to check if a date is within range. The problem I am running into is that if the current day is in a new month, the check is failing.
Here is what my code looks like:
if(iMonth >= iStartMonth && iMonth <= iEndMonth)
{
if(iDay >= iStartDay && iDay <= iEndDay)
{
if(iYear >= iStartYear && iYear <= iEndYear)
{
bEnabled = true;
return;
When I have something like this:
Start date: 3 27 2010
End Date: 4 15 2010
Current Date: 3 31 2010
The day check fails because if (iDay <= iEndDay) does not pass. The scripting language doesn’t have a lot of time related functions, and I can’t compare timestamps because I’m allowing users to put like “03:27:2010” and “04:15:2010” as start/end dates in a config file. I’m assuming I am just not thinking straight and missing an easy fix.
You should really use boost::DateTime instead of attempting to rewrite the wheel (which when the wheel is a date/time framework it’s not as trivial as it may seem). This only if the code you pasted is C++ and not your scripting language (it wasn’t clear). Also may I suggest to use Lua instead? 🙂
Anyway the problem is here:
You should only check this if iMonth == iStartMonth, and the same for the end month. Otherwise
iDay = 31,iEndDay = 15and 31 <= 15 will fail.Also you should check for the year first, then the month, then the day.