I couldn't resist, so I went ahead and did all of them. I might be using these in a future app anyways. Again these are Tcl procs, but you may be able to transfer the logical to another language, if you want.
proc getTG {year} { set di \ [clock format [clock scan $year-11-30] -format "%w"] return [expr {30 - ((($di+1)%7)+2)}] } proc getMem {year} { set di \ [clock format [clock scan $year-05-31] -format "%w"] return [expr {31 - ((($di+6)%7))}] } proc getLabor {year} { set di \ [clock format [clock scan $year-09-01] -format "%w"] return [expr {(((8-$di)%7) + 1)}] } Josh Berkus wrote: > > Folks, > > I'm spec'ing a calendar app for PostgreSQL, and was wondering if anyone > had already solved the following problem: > > How can I calculate the dates of American holidays? > > Obviously, Christmas & New Year's are easy. As is July 4. > > However, Thanksgiving is the last Thursday in November, unless the month > ends on a Thursday or Friday, in which case it is the next-to-last. > Memorial Day and Labor Day are simpler, but also use the "First or Last > Monday in x month" idea. > > I was wondering if anyone had already figured out these calculations, in > any language (SQL would be terrific). > > Thanks! > > -Josh > > ______AGLIO DATABASE SOLUTIONS___________________________ > Josh Berkus > Complete information technology [EMAIL PROTECTED] > and data management solutions (415) 565-7293 > for law firms, small businesses fax 621-2533 > and non-profit organizations. San Francisco > > ------------------------------------------------------------------------ > Name: > Type: Plain Text (text/plain) > Encoding: base64 > > Name: > Type: Plain Text (text/plain) > Encoding: base64 > > Name: > Type: Plain Text (text/plain) > Encoding: base64 > > ------------------------------------------------------------------------ > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED]) _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html