See also
http://www.jsoftware.com/pipermail/general/2004-December/019725.html


R.E. Boss


-----Oorspronkelijk bericht-----
Van: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Namens Sherlock, Ric
Verzonden: zondag 26 oktober 2008 10:37
Aan: Programming forum
Onderwerp: RE: [Jprogramming] two calendar questions

I'm assuming that by day_number is the day of the year rather than "day
number" as defined in the dates script.

Here's a go at the simple one:
yearmonth=: [: 2&[EMAIL PROTECTED] todayno@(,&1 1)@{. + <:@{:
   yearmonth 2008 31
2008 1
   yearmonth 2008 32
2008 2
   yearmonth 2008 60
2008 2
   yearmonth 2009 60
2009 3

>From http://en.wikipedia.org/wiki/Week#Week_number it seems there are a
number of different ways of determining week number.
The following prototype of a yearweek verb follows the ISO rules. I imagine
the logic could be simplified a bit though!!

yearweek=: 3 : 0
  'yr daynum'=. y
  b=. 7| _1+yr+-/<.4 100 400%~<:yr
  md=. 28+3,(~:/0=4 100 400|yr),10$5$3 2
  wks=. _7]\(-b)|. (7*53) {. >:i.+/md
  wk=. I. daynum e."1 ] wks
  if. (wk=52)*. 3 > 0 i:&1@:< {:wks do.
    wk=. 1
    yr=. >:yr
  else.
    if. b>3 do. NB. adjust for first week
      if. wk = 0 do.
        'yr wk'=. yearweek (<:yr),365
      end.
    else. NB.
      wk=. >:wk
    end.
  end.
  yr,wk
)
   yearweek 2010 1
2009 53
   yearweek 2010 8
2010 1
   yearweek 2006 365
2006 52
   yearweek 2006 1
2005 52

---david alis wrote:
> I need two conversion verbs:
>    (year,day_number) into (year,week_number)
> for example - (2010,1) -> (2009,53)
> (1.Jan.2010 is in Week 53 of 2009)
>
> and the simpler:
>  (year, day_number) into (year, month_number)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to