Great article, Cliff!
I would recommend building a date dimension table for this kind of thing. Add columns for everything you might want to know about each date. For example:
CalendarDate
FiscalYear
FiscalQuarterNumber
FiscalQuarterStartDate
FiscalQuarterEndDate
FiscalPeriodNumber
FiscalPeriodStartDate
FiscalPeriodEndDate
WeeksInFiscalPeriod
DaysInFiscalPeriod
DayNumberOfFiscalPeriod
<blah>
<blah>
Use your functions to populate the table with 20 years worth of dates (or however much you need for your business model) so that all of that information is sitting there ready to go. Once you have your table setup, life becomes very simple. You no longer have a need to write complicated (and sometimes slow running) expressions. Instead, you can get whatever you need using simple SELECTs.