Let's begin:
Each calculation is self-contained for convenience sake, which means the only dependency is on the cdt context variable.
Current Date
UpdateContext({cdt:Today()});
First Day of Previous Month
With(
{rootdate: DateValue("01/01/1900")},
With(
{
mts: DateDiff(
rootdate,
cdt,
Months
) - 1
},
DateAdd(
rootdate,
mts,
Months
)
)
)
Last Day of Previous Month
DateAdd(cdt, -Day(cdt), Days)
First Day of Current Month
With(
{rootdate: DateValue("01/01/1900")},
With(
{
mts: DateDiff(
rootdate,
cdt,
Months
)
},
DateAdd(
rootdate,
mts,
Months
)
)
)
Last Day of Current Month
With(
{rootdate: DateValue("01/01/1900")},
With(
{
mts: DateDiff(
rootdate,
cdt,
Months
) + 1
},
With(
{
FirstNxtMonth: DateAdd(
rootdate,
mts,
Months
)
},
DateAdd(
FirstNxtMonth,
-1,
Days
)
)
)
)
First Day of Next Month
With(
{rootdate: DateValue("01/01/1900")},
With(
{
mts: DateDiff(
rootdate,
cdt,
Months
) + 1
},
DateAdd(
rootdate,
mts,
Months
)
)
)
Last Day of Next Month
With(
{rootdate: DateValue("01/01/1900")},
With(
{
mts: DateDiff(
rootdate,
cdt,
Months
) + 2
},
With(
{
FirstNxtMonth: DateAdd(
rootdate,
mts,
Months
)
},
DateAdd(
FirstNxtMonth,
-1,
Days
)
)
)
)
First Day of Previous Quarter
With(
{rootdate: DateValue("01/01/1900")},
With(
{
qtrs: DateDiff(
rootdate,
cdt,
Quarters
)
},
DateAdd(
rootdate,
qtrs - 1,
Quarters
)
)
)
Last Day of Previous Quarter
With(
{rootdate: DateValue("01/01/1900")},
With(
{
qrtr: DateDiff(
rootdate,
cdt,
Quarters
)
},
With(
{
NxtQrtr: DateAdd(
rootdate,
qrtr,
Quarters
)
},
DateAdd(
NxtQrtr,
-1,
Days
)
)
)
)
First Day of Current Quarter
With(
{rootdate: DateValue("01/01/1900")},
With(
{
qtrs: DateDiff(
rootdate,
cdt,
Quarters
)
},
DateAdd(
rootdate,
qtrs,
Quarters
)
)
)
Last Day of Current Quarter
With(
{rootdate: DateValue("01/01/1900")},
With(
{
qrtr: DateDiff(
rootdate,
cdt,
Quarters
) + 1
},
With(
{
NxtQrtr: DateAdd(
rootdate,
qrtr,
Quarters
)
},
DateAdd(
NxtQrtr,
-1,
Days
)
)
)
)
First Day of Next Quarter
With(
{rootdate: DateValue("01/01/1900")},
With(
{
qrtr: DateDiff(
rootdate,
cdt,
Quarters
) + 1
},
With(
{
NxtQrtr: DateAdd(
rootdate,
qrtr,
Quarters
)
},
DateAdd(
NxtQrtr,
0,
Days
)
)
)
)
Last Day of Next Quarter
With(
{rootdate: DateValue("01/01/1900")},
With(
{
qrtr: DateDiff(
rootdate,
cdt,
Quarters
) + 2
},
With(
{
NxtQrtr: DateAdd(
rootdate,
qrtr,
Quarters
)
},
DateAdd(
NxtQrtr,
-1,
Days
)
)
)
)
First Day of Previous Week
With(
{rootdate: DateValue("01/01/1900")},
With(
{
diffval: DateDiff(
rootdate,
cdt,
Days
),
Offset: 1 - Weekday(cdt)
},
DateAdd(
cdt,
Offset - 7,
Days
)
)
)
Last Day of Previous Week
With(
{rootdate: DateValue("01/01/1900")},
With(
{
diffval: DateDiff(
rootdate,
cdt,
Days
),
Offset: 1 - Weekday(cdt)
},
DateAdd(
cdt,
Offset - 1,
Days
)
)
)
First Day of Current Week
With(
{rootdate: DateValue("01/01/1900")},
With(
{
diffval: DateDiff(
rootdate,
cdt,
Days
),
Offset: 1 - Weekday(cdt)
},
DateAdd(
cdt,
Offset,
Days
)
)
)
Last Day of Current Week
With(
{rootdate: DateValue("01/01/1900")},
With(
{
diffval: DateDiff(
rootdate,
cdt,
Days
),
Offset: 1 - Weekday(cdt)
},
DateAdd(
cdt,
Offset + 6,
Days
)
)
)
First Day of Next Week
With(
{rootdate: DateValue("01/01/1900")},
With(
{
diffval: DateDiff(
rootdate,
cdt,
Days
),
Offset: 1 - Weekday(cdt)
},
DateAdd(
cdt,
Offset + 7,
Days
)
)
)
Last Day of Next Week
With(
{rootdate: DateValue("01/01/1900")},
With(
{
diffval: DateDiff(
rootdate,
cdt,
Days
),
Offset: 1 - Weekday(cdt)
},
DateAdd(
cdt,
Offset + 13,
Days
)
)
)
You can download the application on the Power Apps Community apps gallery
To check out my YouTube channel visit: https://youtube.com/user/mgomezb1
LIKE AND SUBSCRIBE!!!
Until next post!
MG.-
Mariano Gomez, MVP

Like
Report
*This post is locked for comments