I'm just looking for ideas on date math but skipping weekends (and holidays maybe).
I've got a scanning (paper to pdf) process that's partly done by people, and partly done by computers. I'm going to track the progress of individual batches via a simple log file concept.
Well anyway -- I have a monitoring script that I just want to use simply to alert people if a batch sits too long at any given stage. For instance, it shouldn't take more than 2 days to get around to checking that a batch finished processing properly. The trick is that the people portions need to check for 2 business days.
Anyone got any better ideas than the simple (but annoying) 5 separate cases based on day of week?
business day date math ideas
Moderator: DosItHelp
-
- Expert
- Posts: 391
- Joined: 19 Mar 2009 08:47
- Location: Iowa
Re: business day date math ideas
Although I don't completely understand your concern, I think the Batch file below may help you. This Batch file get the Day of the Week of current date as an integer value from 0 (Sunday) to 6 (Saturday). This value may help you to know if a date (or a past/future date) falls on weekends or on business days.
If you have further questions about how to modify this method, don't hesitate to post new questions.
Antonio
Code: Select all
@echo off
setlocal
call :DateToJDN "%date%" jdn=
set /A dow=(jdn+1)%%7
echo Today's Day of Week is: %dow%
goto :EOF
:DateToJDN locale_date jdn=
setlocal EnableDelayedExpansion
set "date=%~1"
set dateFormat[0]=mm=10%%a%%100, dd=10%%b%%100, yyyy=100%%c%%10000
set dateFormat[1]=dd=10%%a%%100, mm=10%%b%%100, yyyy=100%%c%%10000
set dateFormat[2]=yyyy=100%%a%%10000, mm=10%%b%%100, dd=10%%c%%100
for /F "tokens=1,2*" %%a in ('reg query "HKCU\Control Panel\International" ^| findstr /I "\<[is]Date\>"') do set "%%a=%%c"
set dateValues=!dateFormat[%iDate%]!
for /F "tokens=1-3 delims=%sDate%" %%a in ("%date:* =%") do set /A %dateValues%
if %yyyy% lss 100 (
if %yyyy% lss 70 (set /A yyyy+=2000) else (set /A yyyy+=1900)
)
set /A a=(mm-14)/12, jdn=(1461*(yyyy+4800+a))/4+(367*(mm-2-12*a))/12-(3*((yyyy+4900+a)/100))/4+dd-32075
endlocal & set %2=%jdn%
exit /B
If you have further questions about how to modify this method, don't hesitate to post new questions.
Antonio
Re: business day date math ideas
avery_larry wrote:Anyone got any better ideas than the simple (but annoying) 5 separate cases based on day of week?
You may map the dates (of DateSpace) to their index of business day in the current year (of BusinessDateSpace); non busisess dates are mapped to the last business day just prior to them.
Then add 2 and map the result back to DateSpace.
penpen
-
- Expert
- Posts: 391
- Joined: 19 Mar 2009 08:47
- Location: Iowa
Re: business day date math ideas
Well, it was worth a shot. I'll just code it the long way basically using what Aacini posted.