Gustav Brock
Gustav at cactus.dk
Thu May 24 09:44:23 CDT 2007
Hi Mark If you are looking for ISO week numbers, use these constants: bytWeek = DatePart("ww", datDate, vbMonday, vbFirstFourDays) However, DatePart has always - since Access 1.0 - been buggy for week number 53. Thus, for serious business use, use a function like this which I have posted many times: Public Function ISO_WeekNumber( _ ByVal datDate As Date) _ As Byte ' Calculates and returns week number for date datDate according to the ISO 8601:1988 standard. ' 1998-2000, Gustav Brock, Cactus Data ApS, CPH. ' May be freely used and distributed. Const cbytFirstWeekOfAnyYear As Byte = 1 Const cbytLastWeekOfLeapYear As Byte = 53 Dim bytWeek As Byte Dim bytISOThursday As Byte Dim datLastDayOfYear As Date bytWeek = DatePart("ww", datDate, vbMonday, vbFirstFourDays) If bytWeek = cbytLastWeekOfLeapYear Then bytISOThursday = WeekDay(vbThursday, vbMonday) datLastDayOfYear = DateSerial(Year(datDate), 12, 31) If WeekDay(datLastDayOfYear, vbMonday) >= bytISOThursday Then ' OK, week count of 53 is caused by leap year. Else ' Correct for Access97/2000 bug. bytWeek = cbytFirstWeekOfAnyYear End If End If ISO_WeekNumber = bytWeek End Function /gustav >>> markamatte at hotmail.com 24-05-2007 16:14 >>> Hello All, I'm using datepart to get the week. 12/31/2006 I am having an issue...No matter what optional constant I use or change...I get Day1 of week 53... and 1/1/2007 shows as Day2 of week 1. How do I get Day1 of Week1? Thanks, Mark A. Matte