Week number
yves COPPE
yvescoppe at skynet.be
Sun Apr 14 03:38:01 EDT 2002
>This is my last whack at it.. there's definitely got to be a better
>way. But these seems to work.
>Just specify your month, day & year in the first few lines...
>
>on mouseup
> put the seconds into nowSecs
> put "12" into theMonth
> put "31" into theDay
> put "2002" into theYear
> put "no" into leapThisYear
> if "." is not in theYear/4 then
> put "yes" into leapThisYear
> if "." is in theYear/100 then
> put "no" into leapThisYear
> if "." is not in theYear/2000 then
> put "yes" into leapThisYear
> end if
> end if
> end if
> if theMonth>01 then add 31 to dayCount
> if theMonth>02 then add 28 to dayCount
> if leapThisYear="yes" then add 1 to dayCount
> if theMonth>03 then add 31 to dayCount
> if theMonth>04 then add 30 to dayCount
> if theMonth>05 then add 31 to dayCount
> if theMonth>06 then add 30 to dayCount
> if theMonth>07 then add 31 to dayCount
> if theMonth>08 then add 31 to dayCount
> if theMonth>09 then add 30 to dayCount
> if theMonth>10 then add 31 to dayCount
> if theMonth>11 then add 30 to dayCount
> set itemDelimiter to "/"
> add theDay to dayCount
> put dayCount*24*60*60 into furtherSecsThisYear
>
> put 0 into totalSecs
>
> put 1969 into sYr
> repeat
> add 1 to sYr
> if sYr=theYear then exit repeat
> put "no" into leapYear
> if "." is not in sYr/4 then
> put "yes" into leapYear
> if "." is in sYr/100 then
> put "no" into leapYear
> if "." is not in sYr/2000 then
> put "yes" into leapYear
> end if
> end if
> end if
>
> if leapYear="no" then put 365 into daysThisYear
> else put 366 into daysThisYear
> add daysThisYear*60*60*24 to totalSecs
>
> end repeat
> put (totalSecs+furtherSecsThisYear)-totalSecs into netSecsThisYr
>
> put netSecsThisYr/60/60/24/7 into netWeek
>
> set itemDelimiter to "."
> put item 1 of netWeek into thisWeek
> answer thisWeek
>
>end mouseup
>
>
Fine, it does just what I want.
I made a fuction of your code BUT for an european date : "DD/MM/YYYY"
it can easily be adapted for an other format of date.
there was a previous discussion in the list about the date format
One may take the code of this date format to adapt the function in an
international format
function WeekNr theDate
set itemdelimiter to "/"
put item 1 of theDate into theDay
put item 2 of theDate into theMonth
put item 3 of theDate into theYear
set itemdelimiter to comma
--put "12" into theMonth
--put "31" into theDay
--put "2002" into theYear
put "no" into leapThisYear
if "." is not in theYear/4 then
put "yes" into leapThisYear
if "." is in theYear/100 then
put "no" into leapThisYear
if "." is not in theYear/2000 then
put "yes" into leapThisYear
end if
end if
end if
if theMonth>01 then add 31 to dayCount
if theMonth>02 then add 28 to dayCount
if leapThisYear="yes" then add 1 to dayCount
if theMonth>03 then add 31 to dayCount
if theMonth>04 then add 30 to dayCount
if theMonth>05 then add 31 to dayCount
if theMonth>06 then add 30 to dayCount
if theMonth>07 then add 31 to dayCount
if theMonth>08 then add 31 to dayCount
if theMonth>09 then add 30 to dayCount
if theMonth>10 then add 31 to dayCount
if theMonth>11 then add 30 to dayCount
set itemDelimiter to "/"
add theDay to dayCount
put dayCount*24*60*60 into furtherSecsThisYear
put 0 into totalSecs
put 1969 into sYr
repeat
add 1 to sYr
if sYr=theYear then exit repeat
put "no" into leapYear
if "." is not in sYr/4 then
put "yes" into leapYear
if "." is in sYr/100 then
put "no" into leapYear
if "." is not in sYr/2000 then
put "yes" into leapYear
end if
end if
end if
if leapYear="no" then put 365 into daysThisYear
else put 366 into daysThisYear
add daysThisYear*60*60*24 to totalSecs
end repeat
put (totalSecs+furtherSecsThisYear)-totalSecs into netSecsThisYr
put netSecsThisYr/60/60/24/7 into netWeek
set itemDelimiter to "."
put item 1 of netWeek into thisWeek
add "1" to thisWeek
return thisWeek
end WeekNr
--
More information about the use-livecode
mailing list