I'll have to run this through some testing, as it's definitely simpler than the solution I came up with.
On Sat, Dec 14, 2013 at 12:40 PM, Wols Lists <[email protected]>wrote: > On 14/12/13 19:20, Kevin King wrote: > > The 8601 week is based on the count of Thursdays but the week starts on > the > > Monday and ends on the following Sunday. I haven't tested this, but is > > this accounted for in your logic? And what about the situation where > Jan 1 > > (on a Fri, Sat, Sun) is in the 52nd or 53rd week of the prior year? > > > YES IT IS :-) > > If you read my code, it takes the given date, goes back to the start of > the week, then goes forward to the Thursday. It then works out where in > its year that Thursday falls. This is guaranteed (if the maths is > correct) to give the correct answer. > > Cheers, > Wol > > > > On Sat, Dec 14, 2013 at 12:14 PM, Wols Lists <[email protected] > >wrote: > > > >> On 14/12/13 18:53, Kevin King wrote: > >>> The most challenging date math we've faced recently (a real project) is > >> the > >>> ISO 8601 week calculation. Extremely easy to introduce an off-by-one > >> error! > >>> > >> THAT'S MY CODE! > >> > >> And how long has it been on Pickwiki? Absolutely ages! > >> > >> How does your solution compare with mine? Six lines of code :-) > >> http://www.pickwiki.com/cgi-bin/wiki.pl?IsoWeekNum > >> > >> I think my code was lifted for this ... > >> http://www.pickwiki.com/cgi-bin/wiki.pl?DateUtility > >> Which had the "off by one" introduced :-) > >> > >> Cheers, > >> Wol > >>> > >>> On Sat, Dec 14, 2013 at 11:13 AM, Wols Lists <[email protected] > >>> wrote: > >>> > >>>> On 14/12/13 16:48, Dan Fitzgerald wrote: > >>>>> Kevin: I'd take the month (verifying; gigo), then run it through a > case > >>>> statement to determine the number of days in that month (sounds like a > >>>> handy subroutine to have in the toolbox). Then I'd convert to get the > >> day > >>>> of the week, another case statement to get the number of days past > >>>> Thursday, do the math from the last DOM internal date, oconv the > result, > >>>> and grab a cup of dark roast. There are probably more efficient ways, > >> but > >>>> that's how I'd work it through my head in an interview. > >>>> > >>>> This is pretty much the same problem as "current week of the year" :-) > >>>> > >>>> Can't remember off the top of my head, but it's *extremely* easy to > make > >>>> an "off by one" error - I remember someone copying my Pickwiki code > and > >>>> getting it wrong, introducing the very error I'd fixed. > >>>> > >>>> Cheers, > >>>> Wol > >>>> _______________________________________________ > >>>> U2-Users mailing list > >>>> [email protected] > >>>> http://listserver.u2ug.org/mailman/listinfo/u2-users > >>>> > >>> _______________________________________________ > >>> U2-Users mailing list > >>> [email protected] > >>> http://listserver.u2ug.org/mailman/listinfo/u2-users > >>> > >> > >> _______________________________________________ > >> U2-Users mailing list > >> [email protected] > >> http://listserver.u2ug.org/mailman/listinfo/u2-users > >> > > _______________________________________________ > > U2-Users mailing list > > [email protected] > > http://listserver.u2ug.org/mailman/listinfo/u2-users > > > > _______________________________________________ > U2-Users mailing list > [email protected] > http://listserver.u2ug.org/mailman/listinfo/u2-users > _______________________________________________ U2-Users mailing list [email protected] http://listserver.u2ug.org/mailman/listinfo/u2-users
