@*ECHO OFF *SETLOCAL *UNALIAS * :: ISOWeekLng.btm V-1.20 May 2005 - Michael Bednarek :: Computes ISO 8601 Week Number (long and with comments) :: Input: A legal date (>=1980-01-01, <=2099-12-31); no check. :: Output: yyyy*100 + ww :: Convert 4NT's DoWI (Sun=1, ... Sat=7) to ISO (Mon=1 ... Sun=7) FUNCTION ISODOWI=`%@EVAL[(%@DOWI[%1] + 5) MOD 7 + 1]` :: The argument's closest Thursday SET ThuNow=%@MAKEDATE[%@EVAL[%@DATE[%1] + 4 - %@ISODOWI[%1]],4] SET theYear=%@YEAR[%ThuNow] :: The 1st Thursday of the year of the argument's closest Thursday SET Thu1st=%@MAKEDATE[%@EVAL[%@DATE[%theYear-01-04] + 4 - %@ISODOWI[%theYear-01-04]],4] :: Difference between those two Thursdays SET ThuDif=%@EVAL[%@DATE[%ThuNow] - %@DATE[%Thu1st]] SET theWeek=%@EVAL[%ThuDif \ 7 +1] SET ISOWeek=%@EVAL[%theYear * 100 + %theWeek] IF %_BATCH LT 2 ECHO ISO Week: %ISOWeek QUIT %ISOWeek