Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

How to? Week, Month, Quarter

These are aliases for determining the current quarter, or the start/end of the week, month, or quarter. They are loaded from my aliases file. They are also wrapped with @execstr and loaded from my functions file.
Code:
:get the Mon-Sun start date of the current week or specified date
 WeekStart=` & ^
    setlocal & ^
    set Arg=%1$ & ^
    set d=%@date[%@if[%@len[%Arg] GT 0,%Arg,%_date]] & ^
    do while %@dowi[%d] NE 2 (set d=%@dec[%d]) & ^
    echo %@makedate[%d] & ^
    endlocal`

:get the Mon-Sun end date of the current week or specified date
 WeekEnd=` & ^
    setlocal & ^
    set Arg=%1$ & ^
    set d=%@date[%@if[%@len[%Arg] GT 0,%Arg,%_date]] & ^
    do while %@dowi[%d] NE 1 (set d=%@inc[%d]) & ^
    echo %@makedate[%d] & ^
    endlocal`

:get the first day of the current month or specified date
 MonthStart=` & ^
    setlocal & ^
    set Arg=%1$ & ^
    iff %@len[%Arg] GT 0 then & ^
        echo %@makedate[%@date[%@month[%Arg]/1/%@year[%Arg]]] & ^
    else & ^
        echo %@makedate[%@date[%_month/1/%_year]] & ^
    endiff & ^
    endlocal`

:get the last day of the current month or specified date
 MonthEnd=` & ^
    setlocal & ^
    set Arg=%1$ & ^
    set d=%@date[%@if[%@len[%Arg] GT 0,%Arg,%_date]] & ^
    set dm=%@month[%@makedate[%d]] & ^
    do while %@month[%@makedate[%d]] EQ %dm (set d=%@inc[%d]) & ^
    set d=%@dec[%d] & ^
    echo %@makedate[%d] & ^
    endlocal`

:get quarter given date or month arg
 GetQuarter=` & ^
    setlocal & ^
    set Arg=%1$ & ^
    iff %@fields["/",%[Arg]] GT 1 .OR. %@fields["/",%[Arg]] GT 1 then & ^
        set Quarter=%@eval[%@floor[%@eval[(%@month[%[Arg]] - 1) / 3]] + 1] & ^
    else & ^
        set Quarter=%@eval[%@floor[%@eval[(%[Arg] - 1) / 3]] + 1] & ^
    endiff & ^
    echo %Quarter & ^
    endlocal`
   
:get start month of quarter given date or month arg
 GetQuarterStart=` & ^
    setlocal & ^
    set Arg=%1$ & ^
    iff %@fields["/",%[Arg]] GT 1 .OR. %@fields["/",%[Arg]] GT 1 then & ^
        set Month=%@month[%[Arg]] & ^
    else & ^
        set Month=%[Arg] & ^
    endiff & ^
    set Quarter=%@eval[%@floor[%@eval[(%[Month] - 1) / 3]] + 1] & ^
    do while %[Month] GT 1 .AND. %Quarter EQ %@eval[%@floor[%@eval[(%@dec[%[Month]] - 1) / 3]] + 1] (set Month=%@dec[%[Month]]) & ^
    echo %Month & ^
    endlocal`

:get end month of quarter given date or month arg
 GetQuarterEnd=` & ^
    setlocal & ^
    set Arg=%1$ & ^
    iff %@fields["/",%[Arg]] GT 1 .OR. %@fields["/",%[Arg]] GT 1 then & ^
        set Month=%@month[%[Arg]] & ^
    else & ^
        set Month=%[Arg] & ^
    endiff & ^
    set Quarter=%@eval[%@floor[%@eval[(%[Month] - 1) / 3]] + 1] & ^
    do while %[Month] LT 12 .AND. %Quarter EQ %@eval[%@floor[%@eval[(%@inc[%[Month]] - 1) / 3]] + 1] (set Month=%@inc[%[Month]]) & ^
    echo %Month & ^
    endlocal`
 
Back
Top